第三次作业
1.结对过程
首先了解完题目后,先讨论了如何去完成这个项目,会涉及多少类,会用到哪些函数。在制定完代码规范后,各自开始自己最初的编码设计,两人都完成后根据制定的代码规范互审,最后合并代码,形成了初步版本,再接着调试修改,完善代码,进行单元测试,形成最终版本。
2.PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
30 | 20 |
· Estimate |
· 估计这个任务需要多少时间 |
60 | 50 |
Development |
开发 |
600 | 550 |
· Analysis |
· 需求分析 (包括学习新技术) |
60 | 240 |
· Design Spec |
· 生成设计文档 |
40 | 20 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
20 | 60 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
10 | 10 |
· Design |
· 具体设计 |
40 | 60 |
· Coding |
· 具体编码 |
180 | 260 |
· Code Review |
· 代码复审 |
25 | 20 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
40 | 50 |
Reporting |
报告 |
70 | 60 |
· Test Report |
· 测试报告 |
40 | 30 |
· Size Measurement |
· 计算工作量 |
30 | 20 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 | 20 |
合计 |
1295 | 1470 |
3.解题思路
解题思路:先进行功能分析,用面向对象设计方法进行概要设计:先完成基本的功能要求,在完成基本的功能要求的基础上,再添加附加要求,进行完善。
4.设计实现过程
4.1相关类设计
- CountLine类用于统计有效行数;
- CountChar类用于统计字符总数;
- CountWord用于存储单词提取以及单词词频统计;
4.2相关函数设计
- CountLine() 用于统计行数
- CountChar() 用于统计字符总数
- CountWord() 用于统计单词总数
5.代码规范及代码互审
5.1代码规范
命名变量、函数时不要随意取名,最好有相关意思,采用大驼峰命名法。避免过多地描述和可要可不要的修饰词。
尽量使代码简明易读,无二义性。
在复杂的表达式中,用括号清楚地表示逻辑优先级。
断行,每个“{” “}”独占一行,一一对应。
给出关键的注释。
5.2代码互审
由于有一些功能没有实现,我们互审主要是根据之前所制定的代码规范来修改代码以及对已经实现的功能进行纠错,再结合两人的代码生成最终的版本。
6.单元测试
.
7.代码说明
创建的类和方法
统计字符数
统计行数
统计单词数
接口封装
将方法封装成dll
8.感受
通过这次作业,我感觉1+1<2的,两个人合作编程虽然是比一个人单独来的效率高些,有问题可以一起讨论,错误也第一时间被指出,减少了后期的犯错,但是由于自己对结对编程还不是很理解,都是先自己完成一遍简单的设计编码,再互审合成代码进行接下来的测试,在这里还是有一点耽误时间。由于很多问题比较生疏,在百度许多东西的用法上耽误了不少时间,通过这次作业,也认识到了自己很多的不足,需要更加努力。