这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzu/SE2020 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzu/SE2020/homework/11167 |
这个作业的目标 | 制作一个程序统计和分析 GitHub 的用户行为数据。 |
学号 | 031802643 |
PSP2.1 | Personal Software Process Stages | 预估耗时(小时) | 实际耗时(小时) |
---|---|---|---|
Planning | 计划 | 1 | 1.5 |
Estimate | 估计这个任务需要多少时间 | 0.1 | 0.1 |
Development | 开发 | 1 | 1 |
Analysis | 需求分析 (包括学习新技术) | 5 | 6 |
Design Spec | 生成设计文档 | 2 | 2 |
Design Review | 设计复审 | 1 | 1 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 0.5 | 0.5 |
Design | 具体设计 | 2 | 2.5 |
Coding | 具体编码 | 5 | 5 |
Code Review | 代码复审 | 1 | 0.5 |
Test | 测试(自我测试,修改代码,提交修改) | 1 | 2 |
Reporting | 报告 | 1 | 1.5 |
Test Report | 测试报告 | 0.5 | 0.5 |
Size Measurement | 计算工作量 | 0.2 | 0.2 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 0.5 | 0.5 |
all | 合计 | 21.9 | 24.8 |
任务分解
在刚开始查看任务的时候,整个人都是懵的。看到实例代码后决定用Python实现。接着开始从网路上学习Python,但看完基础教程后还是不知所措。只好先照着实例代码的思路来看。最后总结了实例的思路,作为编程时的参考。
实际上,这次作业就是要对数据进行分类统计。给出的是JSON类数据,需要对其进行转换。难点并不在于查询与统计部分,而在于解析JSON数据(用更高效的方式)与优化处理大文件时的效果。
代码解析
初始化部分
这一部分将数据转化为List,其中的每个元素都是Dict,且其中没有嵌套,可以直接查找
z这一部分将整理后的数据进行处理,生成三个文件,分别对应要解决的三个问题
查询部分
直接利用生成的文件进行查询,非常方便
优缺点分析
- 优点
- 在初始化时就对文件进行了解析,节省了后续搜索的时间
- 缺点
- 使用read方法,在读取大容量文本时会占用大量内存
- 缺乏多线程,运行文件过大时耗时与内存占用会增加
-改进
-为了对多个文件进行处理,需要使用Python的多线程处理操作
测试截图
GITHUB截图
本地测试截图
代码覆盖率测试
代码规范链接
https://github.com/xiangfei1ae/2020-personal-python/blob/master/codestyle.md.md
作业总结
这次作业一开始让人很难下手,但后来理解了题目以及学了Python相关知识后也理解了很多。但主要思路还是靠参考得来的,而且对于后续优化也没有很好的办法。所以说还是要不断地学习。