- 代码仓库地址
2.PSP表格对预估耗费时间与实际耗费时间的记录
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 |
|
|
· Estimate | · 估计这个任务需要多少时间 | 20 | 10 |
Development | 开发 |
|
|
· Analysis | · 需求分析 (包括学习新技术) | 500 | 300 |
· Design Spec | · 生成设计文档 | 120 | 10 |
· Design Review | · 设计复审 | 20 | 20 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 10 | 10 |
· Coding | · 具体编码 | 600 | 800 |
· Code Review | · 代码复审 | 20 | 50 |
· Test | · 测试(自我测试,修改代码,提交修改) | 20 | 40 |
Reporting | 报告 |
|
|
· Test Repor | · 测试报告 | 20 | 20 |
· Size Measurement | · 计算工作量 | 20 | 5 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 120 | 140 |
| 合计 | 1480 | 1445 |
具体敲代码花的时间最多,感觉用起来才发现全是坑,幸好网上有很多类似的博客,参考后还是很有收获的。
3、计算模块接口的设计与实现过程。
代码分四个主要函数,一个辅助函数。主要函数分别对应四个基本功能,统计字符数,统计字数,统计有效行数,统计各单词的出现次数并将前10个按字典序输进文档中。最后一个函数写得比较大,但是为了简洁起见,这一个功能就用一个函数。
4.计算模块接口部分的性能改进。
判断空行算是我一个比较说得过去的改进吧,刚开始觉得没事儿,后来发现问题挺大,最后想到一行一行读文件后,判断一行的长度为1,是一个单纯的换行符,这一行就不在统计行
数时加入。另一点就是将大小写单词不加以区分这一点,终于灵光一现发现只要在统计词频前全部强行转换为小写就行了,因为我们之后并不需要保留文件原有的格式。5.计算模块部分单元测试展示。
(1)有仅包含空白字符的行
I am
I am
(2)单词中含有数字、大小写,汉字 file123 file2file 3file 3 fiil 李昂 FiLE
(3)单词与单词间有超过一个空格 有空格和其他分隔符的组合 a +b a+b
(4)总单词数量不足10个 或者为0个 @123 ab
(5)
6.计算模块部分异常处理说明。
参考林程同学的博客,我发现忘记对空白文档或者单词总数小于10的文件进行考虑,事实证明如果单词总数小于10,我的代码会报错。加入一个判断条件,总数小于10 那么只输出这个数量的单词。
7.对实际使用的时间的记录。
8.学习日志
由于某些心情上的原因,我没有每次都做学习记录,现在是回忆版本,可能有一些偏差。
(1)2019.1.1下午14:00-17:00
对整个任务进行考虑(然后陷入了悲观之中),大致地了解了一下整个任务。暂时还没有写代码。
(2)2019.1.5 下午 13:00-17:30 18:50-21:30
开始艰难地写程序,参照了一些网上的博客,先是做了一个统计字符的功能,但是输出的结果与实际相差有点大。然后修改了一个函数,深入理解了readlines的功能,最后达到了统计字符,字数,行数的功能。顺便还发现了一个问题,长度函数是len不是lens,之前一直记错了。
(3)2019.1.6 晚上
发现了一个问题,如果我每次调用具有某个功能的函数(参数都是文件指针),必须每次调用前先给文件指针再赋值一次,无法一劳永逸。(这次没有签入码云)
(3)2019.1.8 下午 21:00-23:59
会议室加班,排序的函数始终调不好,调不好排序函数就没办法找出频数前10的单词。
(4)2019 1.9 凌晨0:00-0:13
终于发现排序函数误将[]写为(i)难过。
(5)2019.1.9 下午16:40-21:54
今天是较好的一天,把输出频数前10的单词按字典序重新输出终于做好,按频数输出弄完了再按字典序输出有点蒙,不知道有没有较简洁的方案,最后还是循规蹈矩地重新取了一个列表,先转成字典按字典序排序,然后再输出。顺便找到了如果文件总单词数不足10的修正方案。
(6)2019.1.10 上午 8:10-9:55
这一天在室友“你居然现在还每天满课?”的惊讶声中开始。我只想说,我不仅每天满课,我还有四门考试和软件大作业。今天的进展就是想到了将所有字符转换为小写,以避免开头大写的单词被误判为另一个单词。