第三次作业
结对编程作业
队友的作业地址:https://www.cnblogs.com/illl1314/p/10658828.html
代码github地址:https://github.com/lwy276701865/WordCount.git
1. PSP表格编写
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
30 |
30 |
· Estimate |
· 估计这个任务需要多少时间 |
30 |
30 |
Development |
开发 |
660 |
1700 |
· Analysis |
· 需求分析 (包括学习新技术) |
120 |
240 |
· Design Spec |
· 生成设计文档 |
60 |
60 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
100 |
100 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
30 |
30 |
· Design |
· 具体设计 |
60 |
100 |
· Coding |
· 具体编码 |
240 |
1020 |
· Code Review |
· 代码复审 |
30 |
60 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
30 |
90 |
Reporting |
报告 |
60 |
50 |
· Test Report |
· 测试报告 |
20 |
20 |
· Size Measurement |
· 计算工作量 |
10 |
10 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 |
20 |
|
合计 |
750 |
1780 |
2. 设计思路与代码规范
2.1结对过程
首先在下图位置输入结对伙伴的用户名
然后复制链接发给结对伙伴,他点击之后即可拥有自己仓库的读写权限
下图即为成功邀请伙伴加入自己的仓库
这是我们讨论的照片(非摆拍):
2.2思路描述
通过审题发现输入一个文件名后,需要对它进行4种操作,分别是:统计字符数、单词总数、有效行数、单词出现频率最大的10个单词。我们先查阅了面向对象程序设计(C#)教材关于文件的操作。首先需要读取文件,然后对字符串种类进行判断,这时候就需要写不同的函数或类来实现统计了。
在经过一番讨论后这几个统计功能,我们发现些函数的话太复杂了,所以我们决定用正则表达式,所以我们在网上查阅了相关资料:链接。
2.3设计实现过程
我们编写了一个wordcount类,用来统计各个数据。里面有三个函数:countword,countline,countchar,分别是统计单词数、有效行数、字符数的。
下面是流程图:
2.4代码规范
①功能注释:在每个函数上面写上它的功能的注释。
②变量命名:给变量命名时用英语,不用拼音。
③语句规范:使用循环时必须加花括号,并且里面的语句缩进一个TAB。
④视觉组织:必要时使用空行和缩进,比如每个函数之间、每个类之间都加一个空行。
⑤变量安排有序:定义变量时必须赋初值,一个变量占一行且定义在最前面(不允许在中间出现)。
⑥字段:属性全为public,方便后面单元测试。
⑦函数命名:函数名首字母大写。
3. 代码审查
3.1类库生成dll组件
3.2自审与互审
自审:首先写了一个最简单的统计单词的函数,然后发现单词有特殊的要求,于是就加了很多代码。然后又发现单词不会区分大小写,所以有一些单词就会多计入一些次数,这就又需要改变代码。
互审:我们发现两个人写的代码的参数不同,于是经过商量之后同一了函数的参数,并对相关内容进行了修改。然后我们是在做了第一版代码之后才进行的代码规范制定,于是很多之前的函数都需要重新写。
4. 关键代码
- 统计单词函数
- 统计有效行数函数
- 统计字符函数
- 主函数中的控制函数:
5. 测试与性能分析
5.1单元测试
这是测试统计字符数函数的,下面几个函数的测试方法一模一样
5.2性能分析
6.总结
经过长达接近一周的时间,我和我的小伙伴终于完成了这次作业。尽管我们还是有很多作业里的要求没有做到,但我认为这次作业是我第一次和别人合作完成共同完成一个代码以及后面的流程,让我深深体会了一次结对编程的感觉。它和自己一个人独自完成的感觉是大不一样的,首先就是在整个项目的进行中需要不断的讨论讨论。总体来说两个人在一起干活确实感觉上要比一个人轻松一些,我们之所以用了这么多时间,主要是什么东西都要重头开始学,什么都不是很会。我觉得完美的结对编程一定是1+1>2的。