第三次作业

Github项目地址:https://github.com/islinyu/WordCount

结对伙伴的作业地址:https://www.cnblogs.com/pyxhopkins/p/10655550.html

1.  结对过程:在一个寝室,平时上课也都在一块,于是就在一起进行了结对编程

 

2.  PSP表格(在进行作业项目的时候没有具体计算时间,表格中是大概估计的值)

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

计划

 0

 0

· 需求分析 (包括学习新技术)

 100

 100

· 代码规范 (为目前的开发制定合适的规范)

 20

 20

· 具体设计

 20

 20

· 具体编码

 150

 200

· 代码复审

 50

 50

· 测试(自我测试,修改代码,提交修改)

 60

 80

· 事后总结, 并提出过程改进计划

 30

 30

合计

 430

 500

3.  因为写过的代码不多,在看到作业后并没有清晰地思路,在和结对伙伴清月商量后决定两个人同时着手写代码,各自思考动手写后再进一步商量,取长补短,相互学习

4.  在各自思考后,我们各自写了一份还不完善的代码,在相互看过后,取了清月的代码进行了进一步修改完善,将代码主要分成了四个功能模块,统计字符模块,统计单词模块,自定义输出模块,统计行数模块,在统计单词模块中调用了统计字符的函数,在main函数中调用这几个函数,并进行了前十多单词的输出和词组的划分。

5.  在编写代码时没有特别进行代码规范,是以在上学期学习c#时为规范直接进行的,可读性还是很高的,在复审清月的代码时,对有些类和方法的调用并不是很清楚,在查了一些资料后,学到了fileStreme,stremeReader等方法的使用,收获还是挺大的。在一起完善代码时,发现在统计单词模块中,将txt文档内容转换成的字符串数组存在空字符串,试了几种方法都无法消除空字符串,目前这个问题还没有解决。

6.  在进行单元测试时,对单元测试经验不足,是一边讨论探索学习,一边进行的。在性能分析的时候发现果然是main函数的时间最多,其原因就是因为for循坏,如果读入的文本越大则占有的时间也就愈多了,但是无奈我们还没有想到方法改进。截图如下:

 

7.  项目部分关键代码

//统计单词数

        public static Dictionary<string, int> getWord()

        {

            string a = word();

            Dictionary<string, int> tword = new Dictionary<string, int>();

                int wsaw = 0;

                int n = 0;

            char[] c = { ' ', ',', '.', '?', '!', ':', ';', '\'', '\"' };

            string[] str = a.Split(c);

            for (int i = 0; i < str.Length; i++)

            {

                if (tword.ContainsKey(str[i]))

                {

 

                    tword[str[i]]++;

                }

                else

                {

                    if (str[i].Length > 3)

                    {

                        wsaw++;

                        tword[str[i]] = 1;

                    }

                }

            }

            Console.WriteLine("单词的个数为:{0}", wsaw);

            return tword.OrderByDescending(r => r.Value).ToDictionary(r => r.Key, r => r.Value);

        }

 

        //输出前n多的单词

        public static void getwords()

        {

            Dictionary<string, int> newword = getWord();

            Console.WriteLine("您好,请问您想输出前几多的单词数?");

            int size = Convert.ToInt32(Console.ReadLine());

            int count = 0;

            foreach (KeyValuePair<string, int> kvp in newword)

            {

 

                count++;

                if (count > size + 1)

                    break;

                if (count != 1)

                {

                    Console.Write("{0}:",kvp.Key);

                    Console.WriteLine(kvp.Value);

                    Console.ReadKey();

                }

            }

        }

   

        //统计行数

        public static void readlines()

        {

            string[] Lines = File.ReadAllLines(@"C:\Users\联想\source\repos\WordCount\WordCount\Little Prince.txt");

            int t = 0;

            for (int i = 0; i < Lines.Length; i++)

            {

                if (Lines[i] == "")

                {

                    t = t + 1;

                }

            }

            Console.WriteLine("行数:{0}",Lines.Length - t);

        }

8.  心路历程与收获

在这次结对编程中,和结对伙伴一边讨论一边进行,都能给彼此不少的启发,更好的解决项目中的问题,在这种相互学习中达到了1+1>2的效果,但是在这次结对编程中因为和小伙伴分工不明确,导致项目进行的效率较低,在这样的小项目中,影响还不是很大,在大项目中如果出现这种问题一定会造成很大的影响。同时在项目进行中也深深感觉到了自己掌握的知识远远不够,在各方面经验也不足,在今后要多加积累。

posted @ 2019-04-05 20:55  ♬♬♬♪♪♪  阅读(138)  评论(0编辑  收藏  举报