注释
- 不恰当的注释
- 废弃的注释
- 冗余的注释
- 糟糕的注释
- 注释掉的代码
环境
- 需要多步才能实现的构建
- 需要多步才能做到的测试
函数
- 过多的参数
- 输出参数
- 标识参数
- 死函数
一般性问题
- 一个源文件中存在多种语言
- 明显的行为未被实现(违反 最小惊异原则 The Principle of Least Surprise)
- 不正确的边界行为
- 忽视安全
- 重复
- 在错误的抽象层级上的代码
- 基类依赖于派生类
- 信息过多
- 死代码
- 前后不一致
- 无意义代码
- 人为耦合
- 特性依恋
- 选择算子参数
- 晦涩的意图
- 位置错误的权责
- 不恰当的静态方法
- 函数名称没有表达行为
- 需要额外理解的算法
- 逻辑依赖
- 不遵循团队标准约定
- 魔法数字
- 否定性条件
- 函数做多件事
- 滥用if/else和switch
- 时序耦合
- 随意
- 未封装的边界条件
- 函数不在一个抽象层级上
- 没有在较高层放置可配置数据
- 传递浏览
Java
- 继承常量
- 没有正确使用枚举代替常量
名称
- 非描述性名称
- 名称与抽象层级不符
- 不标准的命名方法
- 歧义的名称
- 编码
- 名称没有说明副作用
测试
- 测试不足
- 没有全面测试相近的缺陷
- 测试速度慢