第三次作业

一、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,两个人结对编程能增加纪律性,写出更好的代码,虽然因能力有限我们没能很好的解决一些问题,但在这个过程中我们收获了了结对编程的意义。

posted @ 2019-04-05 17:45  itsRae  阅读(136)  评论(2)    收藏  举报