代码中不能有以下问题
- 非常严重:没有实现用户的所有需求
- 非常严重:画蛇添足地加上了多余的实现
- 问题较大:只有玩具级、示例级的实现,实现的功能不能 cover 需求
- 问题较大:代码实现过于简陋
- 问题较大:基于 if 的防御性编程和不必要的前向兼容
- 一般不检查意料外的情况
- 遵循 fail fast: 如果出现意料外的情况时代码不会直接崩溃,则需要在前面使用 assert
- 存在问题:存在单行注释
- 禁止用注释说明“是什么”
- 例外:说明“为什么”的注释
- 例外:pylint注释等给自动化程序看的注释
- 存在问题:debug时创建的临时文件没有删除
- 存在问题:代码风格存在以下风格问题:
- try catch后函数继续运行
- 例外: 无限重试
- try catch后返回不当默认值
- 非常常见: import 位置错误
- 非常常见: 代码嵌套过深、代码块过大
- 非常常见: 滥用 hasattr 和 getattr
- 类型标记存在问题:
- 必须标记list/dict等容器类型的item类型
- 对于复杂的dict必须使用TypedDict或Pydantic等正确标注每个value的类型
- 禁止使用Any
- 必须标记list/dict等容器类型的item类型
- 多余副作用:存在满足以下两点的,明显可以重写的函数
- 返回None
- 通过副作用改变外部状态
- try catch后函数继续运行
- 存在问题:没有遵守该项目的惯例:
Registry.get_member_typechecked- 第二个参数t只能是类型,不能是字符串
- 传给t的类型可以在同一个函数那import,这是为了解决循环导入的问题
- 禁止使用assert甚至if检查返回值是否是t指定的类型
- 这个函数在运行时返回的值一定是t指定的类型,不可能是其他类型,更不可能是None
- 清除任何检查错误值的代码,消灭任何可能使其返回错误值的因素
- 禁止将返回值(一个对象)保存在另一个对象的参数中
- 新增功能没有对应的unittest