第三次作业
一、Fork仓库的Github项目地址及本次作业地址
| Github项目地址 | https://github.com/HYHSTUDEY/WordCount.git |
| 黄亚恒的作业地址 | https://www.cnblogs.com/hyhhyh090628/p/10657618.html |
| 我的作业地址 | https://www.cnblogs.com/xx0709/p/10659242.html |
二、PSP表格记录
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
| Planning | 计划 | 30 | 25 |
| Estimate | 估计这个任务需要多少时间 | ||
| Development | 开发 | 120 | 160 |
| Analysis | 需求分析 (包括学习新技术) | 60 | 50 |
| Design Spec | 生成设计文档 | ||
| Design Review | 设计复审 (和同事审核设计文档) | ||
| Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 40 | 30 |
| Design | 具体设计 | 45 | 50 |
| Coding | 具体编码 | 300 | 360 |
| Code Review | 代码复审 | 15 | 15 |
| Test | 测试(自我测试,修改代码,提交修改) | 30 | 25 |
| Reporting | 报告 | ||
| Test Report | 测试报告 | ||
| Size Measurement | 计算工作量 | 20 | 20 |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | 20 |
| 合计 | 680 | 755 |
三、代码设计与实现过程
- 基本功能的实现
在基本功能中,用户通过输入文件地址来实现文件的读取。接着,我们新建了一个WordCount类来实现基本功能,类的基本框架如下:


- 运行结果
当读取的文本内容较少时,程序的结果正常输出。

当读取的文本内容过大时,运行结果则出现异常,由于能力有限,我们最终也没能解决这些异常。

四、制定的代码规范及互审情况
- 代码规范
(1)在每一个功能函数前需要简单注释,对于主要运用的函数也需要注释,以便队友直接明了的看懂代码。
(2)名称的选择与命名,尽量选择易读的标识符名称,可读性比简洁性更重要,同时避免使用与常用编程语言的关键字冲突的标识符。
(3)使用动词或动词短语作为事件的名称。在为事件命名时,使用现在时或过去时表示时间上的前后观念。
(4)在复杂表达式中,必须使用括号。(例如if语句下,尽量使用大括号,使得代码看起来更加清晰明了)
(5)关于分行,多个语句不能写在同一行。(看起来很杂乱)
(6)变量和函数名,统一采用英文,且首字母大写。
- 代码互审
设计代码的过程中,我负责Character(统计字符数)、Lines(统计行数)和Words(统计单词总数)函数的完善,黄亚恒负责Frequency(单词出现频率)、WordSort(单词排序)以及main函数的完善,采取了“一人一个函数”交替进行的方式,避免一个人长时间编程产生视觉疲劳和思路不清的情况。一个人写,另一个在旁边及时检查,出现问题及时讨论解决,提高工作效率。互审过程中,
五、代码分析
WordSort排序方法中我们运用了Hashtable哈希表来对文本内的单词进行遍历和排序,但在最后的运行结果中发现了异常,当文本内容很少时,程序能正常输出结果,但当文本内容过多时,最终的输出结果便会出现异常。

六、单元测试及性能分析
- 单元测试
这一部分由我完成,基于上一次作业的练习,这一次的单元测试进行的还算顺利,但是程序的异常结果由于能力有限暂时还是没办法进行改进。
测试代码如下:

- 性能分析

从图中看Frequency方法占用cpu较多,其次是WordSort方法。
七、Github上传
代码上传这部分由黄亚恒完成,一共上传了两次。


八、结对过程
我俩是室友,平时上课也基本一起,一起结对编程也比较方便,时间和地点都很好。降低了沟通成本。

九、心得体会
这次结对编程,我和小伙伴轮流担任了“领航员”和“驾驶员”的角色,真切的体验到了结对编程的好处。在编程过程中,编代码时我能集中全部注意力完成当前任务,而不用分神去检查代码中的bug,小伙伴会全程观察我敲的代码,提出问题和改进意见,这样大大的提高了工作的效率,角色互换时,我同样全程观察小伙伴的代码,这样很好的锻炼了我的思考能力。我们也遇到了一些问题,比如利用CMD命令行程序来实现文本的读取和操作,我们一直无法成功读取文件,所以最终放弃了用CMD命令行程序来完成项目,还有排序方法的编写,不知道出了什么问题,运行结果存在异常。不过总体来说,我认为1+1>2,两个人结对编程能增加纪律性,写出更好的代码,虽然因能力有限我们没能很好的解决一些问题,但在这个过程中我们收获了了结对编程的意义。

浙公网安备 33010602011771号