一、在文章开头给出Github项目地址:https://github.com/ppp-203/wc
二、解题思路
我的设计思路如下表
分块 |
实现 |
字符数 |
找到可显示字符 |
单词数 |
识别单词字符(2个及以上) 或者a和I |
行数 |
识别换行符 |
导入文件内容(读取) |
BufferedReader实现 |
处理目录下符合条件的文件 |
确定递归条件:当前file是目录 |
空行 |
找出包括不超过可显示字符的行 |
注释行 |
找到包含注释语句标识且不是代码句的行 |
代码行 |
找出包含超过两个可显示字符的代码语句 |
main(主函数,调用测试) |
创建对象及测试 |
三、设计实现过程
1、使用语言:JAVA
2、前半段设计时间:
我尝试用if-else语句,但是设计过程中发现,有出现很多种的情况,使用if-else很容易遗漏并且代码冗杂,所以我最后放弃这个方法
3、后半段设计时间:
我在网上寻找方法,我发现了另一种可行性很高的方法——利用正则表达式。我学习了正则表达式以及Pattern类、Matcher类的用法,最终利用这三个知识点实现了各种情况的识别及计数
四、代码说明
基本功能实现:
扩展功能实现:
辅助接口实现:
测试:
五、测试运行
测试用例如图:
测试结果如下:输入格式wc.exe [parament] [file_name]
基本功能和扩展功能的单元测试覆盖率:
六、预计时间及花费时间
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
|
|
· Estimate |
· 估计这个任务需要多少时间 |
1230 |
1400 |
Development |
开发 |
|
|
· Analysis |
· 需求分析 (包括学习新技术) |
120 |
分析:40 学习:200 |
· Design Spec |
· 生成设计文档 |
40 |
30 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
40 |
20 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
40 |
10 |
· Design |
· 具体设计 |
60 |
60 |
· Coding |
· 具体编码 |
360 |
300+240 |
· Code Review |
· 代码复审 |
60 |
80 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
240 |
150+120 |
Reporting |
报告 |
|
|
· Test Report |
· 测试报告 |
180 |
120 |
· Size Measurement |
· 计算工作量 |
30 |
10 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 |
20 |
合计 |
|
1210 |
1400 |
七、项目小结
1、提前了解实现项目的相关方法(尽量多种),以便对比选择。这样可以省下很多时间,避免时间浪费
2、本次个人项目,我学会了如何做单元测试、回归测试,测试对于bug的发现很有用。
3、这次做个人项目和往常的普通编程作业给我的体验很不一样。我需要学会用插件、Github、做测试等等,而不仅仅只是普通编写代码实现功能。
4、对于我所写的程序,虽然经过这几天的调试修改,已经完善许多,但有些地方还是存在漏洞,只能满足比较常见的C语言文件,对于特殊情况的测试,还有存在很多的不足。