软件工程导论 - 结对队友个人代码分析

队友:软件 2002 时子俊

概述

经过测试,此份代码对需求的实现较为完善,能够满足实际学习场景所需,且代码质量较为令人满意。

math.py 中,实现了 CLI 的基本逻辑,包括账户登录和切换等功能。

paper.py 中,定义了试卷的生成逻辑,对于每种等级,定义了多种模板,防止了因随机生成操作数与嵌套生成操作符导致的题目难度忽高忽低,并避免了求值的困难。同时实现了查重功能。

user.py 中定义了用户类,实现了取值与设置值的多种抽象方法。

优点

  1. 对各种边界情况与不合法输入有较好的预防,程序较为健壮,如能够有效防止 张三1 123 123 类似的不合法输入。
  2. 注释较为详细,对每个方法能够说明参数与返回值的用处,对方法内的关键处也能够说明其作用。
  3. 遵守代码规范,恰当地使用空行,分割了不同的逻辑块,使类似作用的代码更聚合,可读性更高,赏心悦目。
  4. 紧跟时代,使用了 Python 3.10 加入的 match 语句,相比 if 语句嵌套形式更加简洁。
  5. 贴心地打包了 Windows 平台可执行文件,方便没有配好 Python 环境的用户使用。
  6. 使用预设模板出题,能够有效控制题目难度,方便实际学习的无计算器场景计算数值。

缺点

  1. 用户类中的 getset 方法较为贴近于 Java Bean 风格,而对 Python 来说使用 @property 语句更合适(更 Pythonic)。
  2. 查重时并不检查子文件夹内的文件名是否符合格式,账户文件夹内不一定是本软件生成的题目文件。
  3. 查重时需要先将待写入试卷组合成字符串,再于方法内分离,在极端的数据量下效率稍低。
  4. 文件名并不能如实反映函数与变量的作用,如 math.py 并不是执行数学运算的文件。

posted on 2022-09-13 19:25  cyp0633  阅读(115)  评论(0)    收藏  举报

导航