WordCountPro
github地址:https://github.com/skz12345/wcPro
PSP2.1****表格
PSP2.1 | PSP****阶段 | 预估耗时****(分钟) | 实际耗时****(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 40 |
· Estimate | · 估计这个任务需要多少时间 | 30 | 40 |
Development | 开发 | 170 | 230 |
· Analysis | · 需求分析 (包括学习新技术) | 40 | 40 |
· Design Spec | · 生成设计文档 | 20 | 30 |
· Design Review | · 设计复审 (和同事审核设计文档) | 20 | 20 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 15 |
· Design | · 具体设计 | 10 | 15 |
· Coding | · 具体编码 | 20 | 30 |
· Code Review | · 代码复审 | 10 | 20 |
· Test | · 测试(自我测试,修改代码,提交修改) | 40 | 60 |
Reporting | 报告 | 40 | 60 |
· Test Report | · 测试报告 | 30 | 40 |
· Size Measurement | · 计算工作量 | 5 | 5 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 5 | 15 |
合计 | 240 | 330 |
2.1基本任务:代码编写+单元测试
接口实现
在基本任务中,我所负责模块为输出模块,与之相关的接口为List < WordInfo > handle(String input)
和void output(List < WordInfo >),handle函数为统计词频的核心函数,output函数将list集写入文件:
package WordTest;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class output {
private ArrayList < WordInfo > handleList;
public output(ArrayList < WordInfo > handleList){
this.handleList=handleList;
}
public void outPut(){
PrintWriter writer=null;
try {
writer=new PrintWriter(new BufferedOutputStream(new FileOutputStream("result.txt")));
for(WordInfo wordInfo:handleList)
writer.write(wordInfo.toString()+"\r\n");
writer.flush();
} catch (Exception e) {
System.out.println("Error in output");
}finally{
writer.close();
}
}
}
测试用例设计
由于输出函数较为简单,只是将List集中的信息输出到文件中,不涉及到排序,统计次数等问题,只针对空输出,单行输出,多行输出进行分类设计测试用例。
测试结果
单元覆盖率较高,但重复较多。
2.2扩展任务:静态测试
开发规范
在邹欣老师的“现代软件工程讲义3 代码规范与代码复审”中,知道了代码需要遵循一定的风格规范和设计规范,代码风格应该力求简明易读,在一些细节方面需要养成习惯;代码设计规范牵涉到程序设计、模块之间的关系、设计模式等方方面面,在代码被大规模使用时,良好的设计规范会让你在日后的维护、其他人的阅读时产生巨大的帮助。
组员代码评价
梁锦琳的核心模块代码比较精简,但没有注释不好读懂,同时在条件语句中,只有一行代码时缺少大括号,不符合阿里java规范。
静态代码检查
选择的工具:Alibaba Java Coding Guidelines
下载地址:https://github.com/alibaba/p3c
代码改进方法
通过静态代码检查,知道在各种条件语句中就算只有一行代码,也要使用大括号。
同时自己的代码没有注释,应该重视起来让其他人能看懂。