PSP2.1 | 个人开发流程 | 预估耗费时间(分钟) | 实际耗费时间(分钟) |
---|---|---|---|
Planning | 计划 | 10 | 19 |
· Estimate | 明确需求和其他相关因素,估计每个阶段的时间成本 | 10 | 19 |
Development | 开发 | 320 | 251 |
· Analysis | 需求分析 (包括学习新技术) | 20 | 10 |
· Design Spec | 生成设计文档 | 10 | 5 |
· Design Review | 设计复审 | 10 | 6 |
· Coding Standard | 代码规范 | 10 | 5 |
· Design | 具体设计 | 60 | 19 |
· Coding | 具体编码 | 100 | 72 |
· Code Review | 代码复审 | 10 | 12 |
· Test | 测试(自我测试,修改代码,提交修改) | 100 | 112 |
Reporting | 报告 | 35 | 32 |
· | 测试报告 | 10 | 20 |
· | 计算工作量 | 10 | 6 |
· | 并提出过程改进计划 | 15 | 6 |
此次实验增加了几个新功能,并加入了GUI,我主要负责的是新功能的模块。因为上次实验中的代码耦合性不算高,所以此次主要内容在于解决按照要求的词组进行排序。一开始我想运用正则表达式进行匹配:以\b[a-zA-Z]{4,}[A-Za-z0-9]为基础,要求多少个词组就在后面跟上多少个[^0-9a-zA-Z]+[a-zA-Z]{4,}[A-Za-z0-9]。然而,我在尝试以后才发现,这样匹配一个单词只能出现在一个词组中,无法达到要求中的词组匹配。所以,因为正则表达式学的不到位,无法写出符合要求的正则表达式。我选择运用笨办法,就是先将所有输入的单词整理进arraylist,然后再将他们按照要求分类放入map中 String[] phraseTmp = new String[phraseNum];
这样虽然效率低,但总算保证符合要求。
新功能作为一个新函数,重载了上一次写的函数,加入了新的 int phraseNum
`参数。不足的点在于,因为一开始我希望直接运用正则表达式进行匹配,所以没有想要将整理单词列表作为一个单独的函数提出来。这也就造成了两个方法都需要分别进行单词的提出,自然而然的降低了效率。
单元测试相对上一次来说改动不大,主要是增加了对词组的测试
我负责的值得说明的代码部分主要是词组部分。我运用的是笨办法,首先创建与词组要求的词汇数量相同的字符串数组,这样可以保证保存下所有词组不会有遗漏。
先用for循环将前几个词分别保存在相应的字符串中,一直循环到第一个字符串词数量达到要求。然后将第一个字符串存入map中
然后,每遇到一个词都将其存在所有字符串中,每当一个字符串满就将其与map中存入的词组比对,如果不同则加入,相同则value加一。
因为我没有运用stringbuilder,而是对字符串直接"+",所以可能拖慢了速度。
原文:https://www.cnblogs.com/piraat/p/9754497.html