转自:http://zh.wikipedia.org/wiki/%E4%BB%A3%E7%A0%81%E5%BC%82%E5%91%B3
对于Java开发语言,有些工具,比如Checkstyle、PMD和 FindBugs可以自动检测一些代码异味。
常见的代码异味
- 重复代码: 相同或者相似的代码存在于一个以上的地方。
- 长方法: 一个非常长的方法、函数或者过程。
- 巨类: 一个非常庞大的类。
- 太多的参数: 函数或者过程的冗长的参数列表使得代码可读性和质量非常差。
- 特性依恋: 一个类过度的使用另一个类的方法。
- 亲密关系: 一个类依赖另一个类的实现细节。
- 拒绝继承: 子类以一种‘拒绝’的态度,覆盖基类中的方法,换句话说,子类不想继承父类中的方法,参考Liskov substitution principle。
- 冗余类 / 寄生虫: 一个功能太少的类。
- 人为的复杂: 在简单设计已经满足需求的时候,强迫使用极度复杂的设计模式。
- 超长标识符: 尤其,在软件工程中,应该毫无保留的使用命名规则来消除歧义。
- 超短标识符: 除非很明显,一个变量名应该反映它的功用。
- 过度使用字面值: 为提高可读性和避免编码错误,应该使用命名常量。此外,字面值可以且应该在可能的情况下,独立存放于资源文件或者脚本中,在软件部署到不同区域时,可以很方便的本地化。