这个作业属于哪个课程 | <https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018> |
---|---|
这个作业要求在哪里 | <https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018/homework/11880> |
这个作业的目标 | <Github的使用,代码规范使用> |
作业正文 | 202103226-1 编程作业 |
其他参考文献 | 《软件工程》、《构建之法》 |
目录:
1.项目地址
2.PSP表格
3.解题思路
4.代码规范
5.接口的设计与实现过程
6.性能改进
7.单元测试
8.异常处理说明
9.心路历程与收获
1.项目地址
项目地址
2.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) |
---|---|---|
Planning | 计划 | 20min |
• Estimate | • 估计这个任务需要多少时间 | 70min |
Development | 开发 | 30min |
• Analysis | • 需求分析 (包括学习新技术) | 120min |
• Design Spec | • 生成设计文档 | 50min |
• Design Review | • 设计复审 | 30min |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 10min |
• Design | • 具体设计 | 120min |
• Coding | • 具体编码 | 120min |
• Code Review | • 代码复审 | 20min |
• Test | • 测试(自我测试,修改代码,提交修改) | 30min |
Reporting | 报告 | 90min |
• Test Repor | • 测试报告 | 30min |
• Size Measurement | • 计算工作量 | 30min |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 30min |
合计 | 800min |
3.解题思路描述
- 需求:
- 统计文件的字符数(对应输出第一行):
- 统计文件的单词总数(对应输出第二行),单词:至少以4个英文字母开头,跟上字母数字符号,单词以分隔符分割,不区分大小写。
- 统计文件的有效行数(对应输出第三行):任何包含非空白字符的行,都需要统计。
- 统计文件中各单词的出现次数(对应输出接下来10行),最终只输出频率最高的10个。
当初这个看这个题目的时候内心是崩溃的,文字描述对于我来说不易于看懂,所以对这个题目具有畏惧心理,后面问了同学之后,他给我讲了重点,以及教我一些相关的操作,我再重新分析这个问题,抓到重点之后就开始有那么一点感觉了。
4.代码规范
点我
5.接口的设计与实现过程
先定义一个接口,这个接口中有需要的方法。再实现它。接口内容如下:
ong getCharCount();// 字符数 long getWordCount();// 单词数 long getLineCount();// 有效行数 Map<String, Long> getWordFrequency();// 词频(最多10个单词)
统计字符数
直接读取文件的字符数即可。
path.toFile().length()
统计单词数
这个可以分为以下步骤
1.通过分隔符分割字符串
可以通过 String 的 split 方法实现
2.判断字符串是否为单词
可以通过正则匹配或者简单的字符串比较实现。
3.单词计数
把所有单词存放到数组中,数组大小即为单词数量。
Files.lines(path)// 分行,以**系统**的换行符为分隔符 .map(String::toLowerCase)// 转小写,因为不管是输入还是输出,都不区分大小写。另外这个 map 往下移动的话,正则的“a-z”后面要加个“A-Z” .flatMap(CounterHelper::split)// 分词: str -> Arrays.stream(str.split("[^a-z0-9]+")),非单词字符作为分隔符 .filter(CounterHelper::isWord)// 保留单词: str -> Pattern.compile("[a-z]{4,}[a-z0-9]*").matcher(str).matches(),只有符合要求的单词才会被保留下来 .toArray(String[]::new)
6.性能改进
对于我来说暂时不能够将它改进
7.单元测试
8.异常处理说明
如果参数两个以上,默认选最先输入的两个
9.PSP图
PSP2.1 | Personal Software Process Stages | 实际耗时(分钟) |
---|---|---|
Planning | 计划 | 20min |
• Estimate | • 估计这个任务需要多少时间 | 70min |
Development | 开发 | 30min |
• Analysis | • 需求分析 (包括学习新技术) | 120min |
• Design Spec | • 生成设计文档 | 50min |
• Design Review | • 设计复审 | 30min |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 10min |
• Design | • 具体设计 | 120min |
• Coding | • 具体编码 | 120min |
• Code Review | • 代码复审 | 20min |
• Test | • 测试(自我测试,修改代码,提交修改) | 30min |
Reporting | 报告 | 90min |
• Test Repor | • 测试报告 | 30min |
• Size Measurement | • 计算工作量 | 30min |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 30min |
合计 | 800min |
10.心路历程与收获
首先刚开始是一度想要放弃的,因为完全不知道从和下手,后面因为同学有写完了的,然后就告诉我写,才慢慢地开始动手,起初对GitHub是完全不懂得,看不懂不会操作,后来用的码云。这次作业让我对项目有了一个浅显的认识,它难得点就在于要按要求按规矩办事,不能按自己平时特立独行,并且要有对问题理解的能力。