这个作业属于哪个课程 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相关知识后也理解了很多。但主要思路还是靠参考得来的,而且对于后续优化也没有很好的办法。所以说还是要不断地学习。