《构建之法》第四次作业
结对过程
在开始的时候先分开写的,后来直接在一台电脑上写,两人一人检查,一人写,如此交换,在其中也遇到过许多问题,也得到了很好的解决
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 50 |
· Estimate | · 估计这个任务需要多少时间 | 30 | 50 |
Development | 开发 | 1000 | 1200 |
· Analysis | · 需求分析 (包括学习新技术) | 60 | 50 |
· Design Spec | · 生成设计文档 | 60 | 30 |
· Design Review | · 设计复审 (和同事审核设计文档) | 60 | 50 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
· Design | · 具体设计 | 120 | 150 |
· Coding | · 具体编码 | 600 | 900 |
· Code Review | · 代码复审 | 60 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改 | 120 | 120 |
Reporting | 报告 | 30 | 100 |
· Test Report | · 测试报告 | 60 | 30 |
· Size Measurement | · 计算工作量 | 30 | 50 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 60 | 30 |
合计 | 2340 | 2890 |
(1)解题思路
1.在阅读完题目要求之后,决定在先在控制台写,大致分为6个函数,两个类,一个主类,一个方法类。六个函数分别解决6个问题
统计文件的单词总数;
统计文件的有效行数;
统计文件中各单词的出现次数;
按照字典序输出到文件txt;
获取词组;
输出。
在完成以上功能之后,继续完成命令行及gui界面开发。
(流程图见队友博客)
(2)代码审查
本次审查采用的是线下审查,每个人随时监督别人进度
1.排序算法:
在进行词组测试的时候发现排序算法出现了很大的问题,定位好问题之后很快就解决了这个问题
2.词组统计
在进行词组统计的时候发现经常空指针,调用时才发现是分割的时候插入了无法删除的空格。对此我们采取了隔位相取,通过计算的方式获取词组列表
3.规范
Design by Contract:我们采用了简易的规范,也就是首字母大写,驼峰命名法
Information Hiding:我们拥有一个方法类,其内部定义私有变量进行储存,对其他类来说是不可获取的
Interface Design:在完成所有功能之后,就回做图形界面
Loose Coupling:在这个方面因为代码较少,所以松耦合没有完美体现
(3)代码说明
结对之前
在读取文件的时候采取string builder类方法
在分割时采用直接分割
因为使用类储存数据,所以在交换时使用专门的函数
这些方法在之后有较大更改
1.在分割以及行数计算等问题采用正则表达式
2.在排序时利用一个类储存词频和单词,最后放入列表,用列表进行排序
其他见队友博客
(4)计算模块接口部分的性能改进
在进行获取单词数组时我们有两种方式
这是采用字符分割,在字符分割的时候
(5)性能分析及测试
具体见队友博客
共测试了9个函数,都能够通过,特别注意的是测试词组的时候,因为词组数量是用户自定义的,所以测试的时候需要手动进行传值
(6)异常处理
具体见队友博客
主要问题为用户输入的不确定性
用户如果输入错误,则进行相应的提示
(7)结对感受
1.在编程方面:两个人的力量确实1+1>2,在进行编程的时候能精准的定位错误,并且能够搞笑的修改。这是这次结对编程我最大的收获
2.在结对编程时,分工是我们这次失误的地方,不过后来结对的时候很好的解决了这个问题