第三次作业
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的效果,但是在这次结对编程中因为和小伙伴分工不明确,导致项目进行的效率较低,在这样的小项目中,影响还不是很大,在大项目中如果出现这种问题一定会造成很大的影响。同时在项目进行中也深深感觉到了自己掌握的知识远远不够,在各方面经验也不足,在今后要多加积累。