Git地址 | https://github.com/Ayanotc/WordCount.git |
结对伙伴 | 郝振凯 |
学号 | 201831061122 |
PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
1440 |
1500 |
· Estimate |
· 估计这个任务需要多少时间 |
800 |
800 |
Development |
开发 |
800 |
800 |
· Analysis |
· 需求分析 (包括学习新技术) |
80 |
80 |
· Design Spec |
· 生成设计文档 |
80 |
80 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
60 |
60 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
60 |
80 |
· Design |
· 具体设计 |
90 |
60 |
· Coding |
· 具体编码 |
900 |
1440 |
· Code Review |
· 代码复审 |
60 |
90 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
90 |
90 |
Reporting |
报告 |
60 |
60 |
· Test Report |
· 测试报告 |
60 |
60 |
· Size Measurement |
· 计算工作量 |
60 |
60 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 |
30 |
合计 |
1500 |
1600 |
设计分析与实现
功能分析:
基本功能:
- 统计文件的字符数:
- 只需要统计Ascii码,汉字不需考虑
- 空格,水平制表符,换行符,均算字符
- 英文字母:A-Z,a-z
- 字母数字符号:A-Z,a-z,0-9
- 分割符:空格,非字母数字符号
- 例:file123是一个单词,123file不是一个单词。file,File和FILE是同一个单词
- 输出的单词统一为小写格式
- 统计文件的单词总数,单词:至少以4个英文字母开头,跟上字母数字符号,单词以分隔符分割,不区分大小写。
- 统计文件的有效行数:任何包含非空白字符的行,都需要统计。
- 统计文件中各单词的出现次数,最终只输出频率最高的10个。频率相同的单词,优先输出字典序靠前的单词。
- 按照字典序输出到文件txt:例如,windows95,windows98和windows2000同时出现时,则先输出windows2000
扩展功能:
a) 自定义输出:输出单词与其数量可以改变
编程实现:
与结对队友思考之后,建立初步想法,一开始想着还是通过现在学习的C++来实现编程。然后一起参考了一些论坛及博文关于wordcount的思路设计以及代码。最后决定用数据结构来存储数据,以指针来遍历要访问的文件,最后返回集合。结对队友负责主要访问计算过程的编码。队友负责收集整理数据代码的编写以及审计工作。结对队友更倾向于代码编写,我更多从事辅助整理工作。对于高级功能进行了尝试,但实在技术有限,只实现了部分功能,其他的错误有点多,没有实现。编写过程有一些是各自完成,因为不在一个寝室。大部分为一起以结对编程模式完成。
关于测试:测试过程为一起完成,这些在结对队友博客中显示,请参考结对队友博客
代码复审
代码复审:
1,结对队友的代码还是比较整洁有序的,复审过程其实也是我们一起完成的。对于一些函数的参数以及返回,还有注释进行了重新整理。同时对一些错误进行了改正。
2,对于一些比较混乱的代码,顺序不对的函数也重新进行了排序,一些较少的代码进行了合并处理。
3,参考的代码规范:https://wenku.baidu.com/view/93ccae68011ca300a6c390fa.html?from=rec&pos=2
结对过程总结
结对编程相比较一个人来说效率确实会提高很多,结对编程两个人都会更加认真,并且会大大减少编程的错误。可以互相学习编程技巧,在编程中,相互讨论,可以更快更有效地解决问题,互相请教对方,可以得到能力上的互补。确实感觉到两个人之间的不同习惯。结对伙伴的代码更加系统。在编程过程中也显得没有那么枯燥,两个人会有一些趣味。同时两个人也更有兴趣去探索新的东西。在审计过程中,对于错误的发现也会更加快速。通过此次结对编程的确感觉到了结对编程可以让1+1>2。