何谓重构
重构:使用一系列重构准则(手法),在不改变【软件之可察行为】前提下,调整其结构
为何重构?
- 重构改进软件设计
- 重构使软件更易被理解
- 重构助你找到bugs
- 重构助你提高编程速度
何时重构?
三次法则:事不过三,三则重构
- 添加功能时一并重构
- 修补错误时一并重构
- 复审代码时一并重构
重构的难题
- 数据库
- 修改接口
- 难以通过重构手法完成的设计改动
代码的坏味道
- Duplicated Code(重复的代码)
- Long Method(过长函数)
- Large Class(过大类)
- Long Parameter List(过长参数列)
- Divergent Change(发散式变化)
- Shotgun Surgery(散弹式修改)
- Feature Envy(依恋情结)
- Data Clumps(数据泥团)
- Primitive Obsession(基本型别偏执)
- Switch Statements(switch惊悚现身)
- Parallel Inheritance Hierarchies(平行继承体系)
- Lazy Class(冗赘类)
- Speculative Generality(夸夸其谈未来性)
- Temporary Field(令人迷惑的暂时值域)
- Message Chains(过度耦合的消息链)
- Middle Man(中间转手人)
- Inappropriate Intimacy
- Alternative Classes with Different Interfaces(异曲同工的类)
- Incomplete Library Class(不完美的程序库类)
- Data Class(纯稚的数据类)
- Refused Bequest(被拒绝的遗赠)
- Comments(过多的注释)