寒假作业(2/2)
这个作业属于哪个课程 | <2020春W班> |
---|---|
这个作业要求在哪里 | <作业要求的链接> |
这个作业的目标 | 学会github的一些用法,总结和规范自己的代码规范 |
作业正文 | .... |
其他参考文献 | ... |
GitHub仓库链接
https://github.com/UserNamedQEE/InfectStatistic-main
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 40 |
Estimate | 估计这个任务需要多少时间 | 1060 | 1225 |
Development | 开发 | 360 | 380 |
Analysis | 需求分析 (包括学习新技术) | 120 | 110 |
Design Spec | 生成设计文档 | 30 | 40 |
Design Review | 设计复审 | 15 | 20 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
Design | 具体设计 | 40 | 60 |
Coding | 具体编码 | 400 | 450 |
Code Review | 代码复审 | 30 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 15 |
Reporting | 报告 | 60 | 90 |
Test Report | 测试报告 | 15 | 20 |
Size Measurement | 计算工作量 | 10 | 10 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 40 | 60 |
合计 | 1100 | 1285 |
解题思路
看到题目后先根据要求中给的链接看了一点关于github的教程,说实话还是挺懵的。试了一下和问了同学之后,成功把代码克隆到本地,然后开始分析需求写代码。
关键代码
这部分代码的主要目的是从命令行参数中提取出所需要的参数,以便后面使用。
这部分代码是通过比较文件名和给定的日期参数,筛选出后面需要读取的文件列表,并将其保存等待使用。
这部分代码是逐行读入文件,并通过判断得出所属的情况(其实思路分析里原本有关于不同情况的整理,忘了保存orz),将数据保存至对应的hashmap中,此处对于数据不作判断,即无论是否需要输出的数据,都会进行统计。
此在输出时需要进行判断,哪些是需要输出的,由于我的数据储存方式的原因,对于4种需要统计的人数用了4个hashmap,因此可以通过省份来进行简单的查找,而未指定省份的情况就变得较为困难,因此我在前面从日志提取文件时,将提取出的省份一并保存起来以供此处使用,这样可以简化逻辑,并且可以实现代码复用
性能测试
代码规范
https://github.com/UserNamedQEE/InfectStatistic-main/blob/master/221701234/codestyle.md
心路历程和收获
在写代码的时候,因为题目要求的是命令行参数,一开始不太懂如何进行命令行参数的调试,因此先将代码在一个本地新建的文件中进行测试,测试无误后再添加至InfectStatistic中,按照原先的思路一个一个功能进行实现,因此输出是最后实现的,难以通过输出的文件进行判断,又不会调试命令行参数,带来了很多的麻烦。而且一个一个功能实现下来也会出现一些阻碍,尤其是在最后的输出功能实现阶段,由于前面对于输出部分的功能实现构思不够明确清晰,导致思路几经改变,牵一发而动全身,需要对前面的提取数据部分的代码再进行对应的修改。编码格式问题让我吃尽苦头,将近卡了3个小时的时间来寻找问题所在,一开始代码中关于读写程序功能部分使用的是FileReader以及FileWritter,它们无法指定读取文件时的编码格式,而控制台默认格式为GBK,在控制台执行对应程序时,会默认以GBK编码格式读取文件,这也导致了我在编译器进行调试和运行时得到的结果无误,但相同的命令到了控制台输出的结果就是错误的,最后发现问题改用高级IO流,在代码中指定输入输出格式为UTF-8解决了这个问题。
相关的仓库
项目 | 链接 | 描述 |
---|---|---|
vue | https://github.com/vuejs/vue | vue框架的官方文档 |
axios | https://github.com/axios/axios | axios的官方文档,axios可以与vue结合使用开发轻量的WEB网络应用 |
个人博客 | https://github.com/MQPearth/Blog | 基于spring boot以及vue搭建的个人博客,可供上手的好项目 |
Ant Design Pro | https://github.com/ant-design/ant-design-pro/ | 阿里前端蚂蚁金服开发的开源项目,提供了很多现成的组件,方便使用 |
bootstrapVue | https://github.com/bootstrap-vue/bootstrap-vue | BootstrapVue具有40多个插件,80多个自定义组件和300多个图标,它为Vue.js提供了最全面的Bootstrap v4组件和网格系统实现之一。 |