第三章 代码的坏味道------出现这些情况视为可重构
3.1 Duplicated Code
3.2 Long Method
3.3 Large Class
3.4 Long Parameter List(过长参数列)
3.5 Divergetn Change(发散式变化)
某个类经常因为不同的原因在不同的方向上发生变化
3.6 Shotgun Surgery(霰弹式修改)
如果遇到某种变化,你都必须在很多不同的类内做许多小的修改
使用Move Method 或者Move Field将所有修改的代码放在同一个类
3.7 Feature Envy(依恋情结)
将数据和对数据操作的行为包装在一起
3.8 Data Clumps(数据泥团)
将数据提炼到单独的类中
3.9 Primitive Obsession(对基本数据类型的痴迷)
在某些情况下可以使用简单的类从而取代基础数据类型,或者有一组字段就可以封装成一个类了。
3.10 Switch Statements
3.11 Parallel Inheritance Hierarchies
3.12 Lazy Class
3.13 Speculative Generality
3.14 Temporary Field
3.15 Message Chains
如果一个对象请求另一个对象,然后后者又请求另一个对象...这样成为消息链。
利用Extract Method and Move Method
3.16 Middle Man
避免过度委托
3.17 Inappropriate Intimacy
避免类之间过度亲密
3.18 Alternative Classes witch Different Interfaces
避免不同签名的函数做着同一件事情
3.19 Incomplete Library Class(不完美的类库)
3.20 Data Class (纯粹的数据类)
3.21 Refused Bequest
3.22 Comments 过多的注释