坏味道1 :重复代码
重构方法:
1) Extract Method (提炼函数): 你有一段代码可以被组织在一起并独立出来。 将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。
2) Extract Class (提炼类):某个类做了应该由两个类做的事。建立一个新类, 将相关的字段和函数从旧类搬移到新类。
3) Pull Up Method (函数上移):有些函数, 在各个子类中产生完全相同的结果。 将该函数移至超类。
4) Form Template Method(塑造模板函数):你有一些子类, 其中相应的某些函数以相同的顺序执行类似的操作,但各个操作的细节上有所不同。 将这些操作分别放 进独立函数中, 并保持他们都有相同的签名,于是原函数也就变得相同了。 然后将原函数上移至超类。
坏味道2:过长函数
重构方法:
1) Extract Method (提炼函数): 你有一段代码可以被组织在一起并独立出来。 将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。
2) Replace Temp with Query (以查询取代临时变量): 你的程序以一个临时变量保存某一表达式的运算结果。将这个表达式提炼到一个独立函数中。 将这个临时变 量的所有引用点替换为对新函数的调用。 此后,新函数就可被其他函数使用。
3) Replace Method with Method Object(以函数对象取代函数): 你有一个大型函数, 其中对局部变量的使用使你无法采用提炼函数的方法。 将这个函数放进一个单 独的对象中, 如此一来局部变量就成了对象内的字段。然后你可以在同一个对象中将这个大型函数分解为多个小型函数。
4) Decompose Conditional(分解条件表达式): 你有一个复杂的条件(if-then-else)语句。 从 if、 then、 else 三个段落中分别提炼出独立函数。
坏味道3: 过大的类
重构方法:
1) Extract Class (提炼类):某个类做了应该由两个类做的事。建立一个新类, 将相关的字段和函数从旧类搬移到新类。
2) Extract Subclass (提炼子类): 类中的某些特性只被某些(而非全部)实例用到。新建一个子类, 将上面所说的那一部分特性移到子类中。
3) Extract Interface (提炼接口): 若干客户使用类接口中的同一子集, 或者两个类的接口有部分相同。将相同的子集提炼到一个独立接口中。
4) Replace Data Value with Object (以对象取代数据值): 你有一个数据项,需要与其他数据和行为一起使用才有意义。将数据项变成类。
坏味道4: 过长参数列
重构方法:
1) Replace Parameter with Method(以函数取代参数)