1. Duplicated Code
重复代码,在程序中多次出现的相同结构或功能的代码
- 同一个类中的两个函数含有相同的表达式
- 两个互为兄弟的子类中含相同的表达式
- 相互独立的类中出现相同表达式
2. Long Method
- 过长的函数难以理解及维护
- 段函数或间接层具有很强的解释能力、共享能力和选择能力
- 面向对象几乎完全免除了进程内函数调用的开销
- 短函数功能单一明确,可以起一个比较贴近功能的名称
- 避免过长的参数列表
- 查找注释过的代码,通过可以提取出来形成小函数
- 条件表达式和循环代码也可以提取
3. Large Class
- 一个类若需要做过多的事情,就会出现大量实例对象,进而导致产生重复代码
- 将类中彼此相关的变量提取到新类或子类中(可通过变量前缀或字尾区分是否相关)
- 根据类接口的调用方式来确定该类对外的接口分解
4. Long Parameter List
- 过长的参数列表难以理解,可能造成前后不一致,不易修改
- 可以通过宿主对象,或将参数封装成对象传入都可有效减少入参
- 避免较大对象的传入,此时需要权衡是否以参数列表传入
5. Divergent Change
- 当类因为不同的场景需求导致其功能向不同的方向发生变化时,那么当你要修改