寒假作业2
寒假作业2
| 这个作业属于哪个课程 | 2020春W班 |
|---|---|
| 这个作业要求在哪里 | 作业要求 |
| 这个作业的目标 | 熟悉github使用及PSP流程 |
| 作业正文 | 本文 |
| 其他参考文献 | CSDN、菜鸟教程 |
PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 30 | 40 |
| Estimate | 估计这个任务需要多长时间 | 10 | 10 |
| Development | 开发 | 25 | 30 |
| Analysis | 需求分析(包括学习新技术) | 80 | 80 |
| Design Spec | 生成设计文档 | 25 | 30 |
| Design Review | 设计复审 | 15 | 20 |
| Design Standard | 代码规范(为目前开发制定合适的规范) | 25 | 25 |
| Design | 设计 | 30 | 45 |
| Coding | 编码 | 760 | 860 |
| Code Review | 代码复审 | 60 | 90 |
| Test | 测试 | 60 | 80 |
| Reporting | 报告 | 30 | 40 |
| Test Report | 测试报告 | 10 | 15 |
| Size Measurement | 计算工作量 | 15 | 20 |
| Postmortem & Improvement Plan | 事后总结,提出改进计划 | 20 | 20 |
| 合计 | 1195 | 1505 |
思路描述
看到题目后我就想到程序将会进行许多字符串模式判断,然后根据不同的字符串格式做相应的处理,最后输出到文件的时候处理一下几个参数,比较自然想到了正则表达式。
程序设计及主要函数流程图
这是程序代码简单设计图,看了助教大佬的建议我学着用了两个设计模式,希望使整个程序的扩展性和维护性更好.
整体的设计
CommandManager的参数处理函数setArguments()流程图
list命令的执行函数execute()流程图
具体模式的日志行处理函数doCount()流程图
代码说明
CommandManager类的setArguments()方法接收从命令行输入得来的字符串数组,将以"-"开头的参数及其后的选项放入为各自新建的队列中,最后再把这些队列放入Arguments队列中,得到参数队列
在list的execute方法中,首先遍历CommandManager提供的参数列表提取出list命令的参数,如果不含必要的log和out参数则报错。
通过遍历文件夹的时候遍历日志文件,提取日志行交给LogHandle类的LogHandlerList()方法执行,该方法根据日志行匹配的模式选择相应的类执行
从命令行读取字符串数组后可以从数组头直接得到执行的主命令,接着判断该读取的命令是否是已经实现的命令。这里是采用了命令模式,可以动态的调整命令的种类,只要实现了的命令就可以添加到CommandInvoker的支持命令列表里
新增记录,判断感染表中是否存在该省份的记录,不存在则创建,否则取出该记录加上新增数目再放入(减少类似)
新增死亡记录,将死亡者所在省份的感染患者减少相应数目,并且对死亡表做出相应修改
相应省份的疑似表的记录做出值减少修改
流出省份的相应记录表做值减少修改,流入省份判断是否有相应的类型存在,存在则修改值,否则创建记录
单元测试
将9种类型的日志行分别测试,得到输出结果和预期相符
测试CommandManager的字符串处理,得到的参数结果符合预期
更改参数,并进行覆盖率测试,三组类型的测试可以基本代表所有情况,并且三组测试完主要代码覆盖率100%,(调用类代码很简单就没必要单独测了)
> ##
vue.js源码解析
vue源码解析。。。












4EMLS6]%606.png)
浙公网安备 33010602011771号