WordCount优化
项目地址:https://github.com/chaseMengdi/wcPro
基本任务:代码编写+单元测试
PSP表格
PSP2.1 |
PSP阶段 |
预估耗时(小时) |
实际耗时(小时) |
Planning |
计划 |
0.5 |
0.5 |
Estimate |
估计任务需要多少时间 |
0.5 |
0.5 |
Development |
开发 |
0.5 |
2 |
Analysis |
需求分析 |
0.5 |
0.5 |
Design Spec |
生成设计文档 |
0.5 |
0 |
Design Review |
设计复审 |
0.5 |
0.5 |
Coding Standard |
代码规范 |
0.5 |
0.5 |
Design |
具体设计 |
0.5 |
0.5 |
Coding |
具体编码 |
0.5 |
1 |
Code Review |
代码复审 |
0.5 |
0.5 |
Test |
测试 |
1 |
1.5 |
Reporting |
报告 |
0.5 |
0.5 |
Test Report |
测试报告 |
1 |
0.5 |
Size Measurement |
计算工作量 |
0.5 |
0.5 |
Postmortem |
总结 |
0.5 |
0.5 |
|
合计 |
8.5 |
10 |
接口实现
我主要负责main函数编写,判断并处理命令行参数。main函数参数中的args为字符串数组,将args数组中的参数取出判别,便可获得命令行输入参数以及指定的输入文件名和指定的输出文件名。代码如下
public static void main(String[] args) { if (args.length == 1) { if (args[0].endsWith(".txt")) { HashMap<String, Integer> map = wcPro.count(args[0]); String pri=wcPro.print(wcPro.sortList(map)); System.out.println(pri); } else if (args[0].equals("-x")) { imgShow(); } else{ System.out.print("输入格式错误\n"); } } else{ System.out.print("参数数量错误\n"); } }
测用例设计
最后一个测试用例需要选择正确的txt文件才能通过测试
Test Case ID测试用例编号 |
Test Item 测试项(即功能模块或函数) |
Test Case Title 测试用例标题 |
Test Criticality重要级别 |
Pre-condition预置条件 |
Input 输入 |
Procedure 操作步骤 |
Output 预期结果 |
Result实际结果 |
Status是否通过 |
Remark 备注(在此描述使用的测试方法) |
01 |
输入控制模块 |
参数为空 |
M |
无 |
wcPro.exe |
无 |
参数数量错误 |
参数数量错误 |
是 |
黑盒测试 |
02-04 |
输入控制模块 |
参数过多 |
M |
无 |
wcPro.exe -a test.txt |
无 |
参数数量错误 |
参数数量错误 |
是 |
黑盒测试 |
05-09 |
输入控制模块 |
参数错误 |
M |
无 |
wcPro.exe -a |
无 |
参数数量错误 |
参数数量错误 |
是 |
黑盒测试 |
10-13 |
输入控制模块 |
文件类型错误 |
H |
无 |
wcPro.exe test.c |
无 |
输入格式错误 |
输入格式错误 |
是 |
黑盒测试 |
14-16 |
输入控制模块 |
文件未找到 |
H |
无 |
wcPro.exe -x |
无 |
输入格式错误 |
输入格式错误 |
是 |
黑盒测试 |
17-19 |
输入控制模块 |
文件名正常 |
L |
无 |
wcPro.exe -x test.txt |
无 |
pri |
pri |
是 |
黑盒测试 |
20 |
输入控制模块 |
参数正常(-x) |
H |
无 |
wcPro.exe test.txt |
无 |
pri |
pri |
是 |
黑盒测试 |
单元测试运行结果
小组贡献:因为水平有限,我只负责main函数编写,做得并不多,在本项目中的小组贡献率为0.08。
扩展任务
开发规范
阿里巴巴Java开发规范手册
【强制】杜绝完全不规范的缩写,避免望文不知义。
代码分析
对刘博谦代码进行分析
public static String imgShow() { // 默认的打开路径为“我的文档” JFileChooser fileChooser = new JFileChooser(new File( System.getProperty("user.dir"))); // 设置默认目录为得到工程的路径 fileChooser.setDialogTitle("请选择文件"); FileNameExtensionFilter nameFilter = new FileNameExtensionFilter( "文本文件(*.txt)", "txt"); fileChooser.setFileFilter(nameFilter); int returnVal = fileChooser.showOpenDialog(null); if (returnVal == JFileChooser.APPROVE_OPTION) { String[] filePath = new String[1]; filePath[0] = fileChooser.getSelectedFile().getPath(); main(filePath); return "图形界面打开成功\n"; } else { return "图形界面打开失败\n"; } } }
函数没有完全不规范的缩写,符合规范要求,无需改进。
参考资料