读《重构与模式》4--代码坏味
1.重复的代码
使用template method去除
如果是对象创建是可以使用Factory Method来去除
如果代码处理一个对象或者一组对象,可以用composite重构,如果对象处理区别只有在接口不同,可以使用adapter
2.方法过长
减少方法的长度可以共享逻辑,可以帮助理解代码。
如果有包含了一个分派和处理请求的大号swiche可以使用command
如果swiche从接口的不同的类许多的类中收集数据,可以使用visitor
3.条件逻辑太复杂
如果条件逻辑控制是应该执行一种计算操作几个变形中的类中的某一个,可以使用strategy
如果是核心代码之处还要加上特殊的行为,可以用decorator
如果控制对象状态转换的条件表达式比较的复杂,可以使用state
处理空操作情形经常需要创建条件逻辑,可以用null object
4.基本类型迷恋
如果控制对象的状态转换的是使用基本类型的复杂条件逻辑,可以使用state
如果控件算法运行的非常复杂的条件逻辑,可以使用 strategy
隐式创建了使用基本类型的树,可以使用compoiste
类有许多方法支持多个基本类型的组合,那么可能存在隐式的语法interpretor
如果基本类型是提供装饰,可以使用decorator
5.不恰当的暴露
使用factory
6.解决方案蔓延
如果许多类中都有用来完成某些职责的代码和数据,这就是解决方案的蔓延
7.异曲同共的类
两个相似类却有不同的接口。
8.冗余类
9.类过大
使用command,state,interpretor进行重构
10.分支语句
使用command,将聚集操作移到visitor
11.组合爆炸
当有许多段代码使用不同种类或数量的数据或对象做同样的事情
12.怪异解决方案
如果在同一系统中使用不同方式解决同一个问题。