寒假作业(2/2)——疫情统计 截止:2020/2/18 23:00:00
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/2020SpringW |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/2020SpringW/homework/10281 |
这个作业的目标 | <开发疫情统计程序,学习使用github,github desktop,IEAD,Jprofiler> |
作业正文 | 下方 |
其他参考文献 | github,CSDN,菜鸟教程 |
Github仓库地址
- 作业的主仓库:https://github.com/numb-men/InfectStatistic-main
- 我的Github仓库地址:https://github.com/An1ess/InfectStatistic-main
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 120 | 60 |
Estimate | 估计这个任务需要多少时间 | 1680 | 1860 |
Development | 开发 | 700 | 800 |
Analysis | 需求分析 (包括学习新技术) | 120 | 90 |
Design Spec | 生成设计文档 | 60 | 80 |
Design Review | 设计复审 | 30 | 10 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
Design | 具体设计 | 60 | 30 |
Coding | 具体编码 | 400 | 600 |
Code Review | 代码复审 | 30 | 20 |
Test | 测试(自我测试,修改代码,提交修改) | 30 | 15 |
Reporting | 报告 | 40 | 60 |
Test Report | 测试报告 | 60 | 45 |
Size Measurement | 计算工作量 | 60 | 45 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | 45 |
合计 | 1800 | 1920 |
解题思路描述
1.对程序大致构思
看完题目后,可以把内容分为大致以下几个内容:1.要读取日志文件,所以我们需要先封装一个读取文件的类,能够将给定路径的文件信息全部传输到类的属性里。
2.要输出文件,所以我们需要封装一个用来写文件的类,该类能够得到读文件类的属性,将得到的信息全部输出到指定路径的文件中。
3.要得到命令行的参数,所以要建立一个能够解读命令行的类,将main函数中的args传给该类的属性string[] str。然后通过该类的方法对str数组进行处理以及分析,最终确定文件信息哪些该输出,哪些不该输出。
2.查阅相关资料
1.首先先确定要用什么语言来完成此次作业,我选择使用的是JAVA语言。所以我先查阅了JAVA的一些基础语法,进行相对全面的复习。2.复习过后,就可以开始查阅这次作业需要用到的一些常用api,例如日期转成string,将日期格式化,以及日期大小的对比等,还有自定义类的sort排序等等
3.单元测试
这个部分需要编写十个以上的测试用例,我通过控制变量的方法捏造了十几个测试用例,确保我写完的程序能够大体上不出现错误。
设计实现过程
代码说明
单元测试截图和描述
1.全部测试所用的时间以及是否成功。
2.测试1,不带其余参数的输入与输出
3.测试2,带-date参数并且输入正确的格式日期
4.测试3,带参数-date,但不带日期,默认为当前日期
5.测试4,带参数-date,但是日期格式错误,将会按照当前日期处理
6.测试5,带参数-date并且日期正确,带参数-type以及ip格式正确
7.测试6,带参数-date并且日期正确,带参数-type以及ip sp cure dead格式正确
8.测试7,带参数-date并且日期正确,带参数-type以及ip sp cure dead格式正确,并且调换顺序
9.测试8,带参数-date并且日期正确,带参数-type以及ip sp cure dead格式正确,带参数-province
10.测试9,带参数-date并且日期正确,带参数-type以及ip sp cure dead格式正确,带参数-province
11.测试10,带参数-date并且日期正确,带参数-type以及ip sp cure dead格式正确,带参数-province,并且出现日志中没有的省份
12.测试11,带参数-date并且日期正确,带参数-type以及ip sp cure 格式正确,带参数-province,并且出现日志中没有的省份
13.测试12,带参数-date并且日期正确,带参数-type以及ip cure 格式正确,带参数-province
14.测试13,带参数-date并且日期正确,带参数-type以及ip cure 格式正确,带参数-province,并且出现日志中没有的省份
单元测试覆盖率优化和性能测试
在覆盖率方面,可能是测试单元没有一部分输入错误的样例,所以覆盖率没能到百分百,但对于其他正确代码以及单元测试用例,能够基本覆盖
在性能优化方面,我应该多考虑一些数据结构,减少循环次数,降低时间复杂度,并且减少数组的创建,降低空间复杂度
代码规范的链接
我的代码规范链接:https://github.com/An1ess/InfectStatistic-main/blob/master/221701434/codestyle.md
心路历程与收获
1.培养分析能力
此次作业刚拿到题目时,心情是复杂的,因为题目篇幅太长,细节多,第一遍看下来,看到结尾时开头的内容就都忘光了,
反正活是来了,再矛盾,也得干。于是我拿起笔和纸,将网页上的作业需求分成了好多个部分,一个部分一个部分的看,
并且认为重要的地方就用笔先写在纸上,最后通过脉络将他们联系起来,这样题目看起来就简单易懂了,没有一开始那么复杂。
2.加强了我的编码能力
在完成了分析后,便开始编码,一开始不出意料,自己写了很多的bug,踩了很多的坑,也许也留了很多的坑,但是经过非常久的
学习和思考,不断地完善自己的代码,不断地减少bug,这个过程虽然是辛苦的,但却是快乐的,每一次的恍然大悟都伴随着对错误以及
知识点的重新认识,这个过程是值得记录的,是编码能力变强的点点滴滴。
3.加强了我的自学能力
这次作业需要用到github desktop以及github的fork等相关操作,从来没接触过的我一开始看到要求时是头皮发麻的。
加上又是全英文的软件,一开始看不懂的地方只能慢慢的百度,等知道了github desktop大致是什么模样后开始查阅资料,
学习github的一些操作例如这次作业的commit以及ignore,经过许久的查阅以及实践,我现在对于github已经有了初步的认识
所以此次作业使我的自学能力加强了。
4.加强了我的改bug能力(重要)
这次作业的最后,我通过ide传参的方式以及cmd传参的方式得到程序的结果不同,一开始找不出原因,但找了许久并没有找出来,后来通过输出读取文件的内容才发现
原来是编码格式的问题,后来修改了编码格式,cmd和ide传参的输出结果一样了,才明白有时微小的细节将会是影响整个工程的重要因素,因此注重细节,仔细找出原因
才是我们需要真正掌握的。
技术路线图相关仓库
1.java-bible
链接:https://github.com/biezhi/java-bible
简介:这里记录了一些技术摘要,部分文章来自网络,本项目的目的力求分享精品技术干货,以Java为主。
2.advanced-java
链接:https://github.com/doocs/advanced-java
简介: 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务等领域知识,后端必看,前端也可学习。
3.technology-talk
链接:https://github.com/aalansehaiyang/technology-talk
简介:汇总java生态圈常用技术框架、开源中间件,系统架构、项目管理、经典架构案例、数据库、常用三方库、线上运维等知识。
4.CS-Notes
链接:https://github.com/CyC2018/CS-Notes
简介:技术面试必备基础知识、Leetcode 题解、后端面试、Java 面试、春招、秋招、操作系统、计算机网络、系统设计。
5.JAVAWeb-Project
链接:https://github.com/muxiao167/Heart-First-JavaWeb
简介:本仓库存放的是Java Web 入门开发教程。面向新手友好,容易上手。