- 理由
- 代码重复
- 冗长的子程序
- 循环过长或嵌套更深
- 内聚性太差的类
- 类的接口未能提供层次一致的抽象
- 拥有太多参数的参数列表
- 变化导致对多个类的相同修改
- case语句需要做相同的修改
- 某个类同其他类关系过于亲密
- 子程序命名不恰当
- 数据成员被设置为公用
- 注释被用于解释难懂的代码 不要用拙劣的代码编写文档—-应当重写代码
- 使用了全局变量
- 特定的重构
- 数据级
- 用具名常量代替神秘数值
- 使变量的名字更为清晰且传递更多信息
- 将表达式内联化
- 引入中间变量
- 用函数来代替表达式
- 用多个单一用途变量来代替某个多用途变量
- 在局部用途中使用局部变量而不是参数
- 将一组类型码转化为类或枚举类型
- 语句级
- 将复杂布尔表达式转换成命名准确的布尔函数
- 合并条件语句不同部分中的重复代码片段
- 数据级