标签:分解 duplicate field rac phi 霰弹式修改 修改 state模式 变化
如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。
没个傻瓜都能够写出计算机能够理解的代码,但是唯有写出人类能够理解的代码的程序员,才是优秀的程序员。
重构步骤
1. 为即将修改的代码建立一组可靠的测试环境。测试机制再重构领域的地位很重要。
2. 分解并重组
2.1 extract
2.2 move
2.3 replace temp with query
2.4 State模式 Gang of four,一个对象
2.5 Replace Type Code with State/Strategy
2.6 Replace Conditional with Polymorphism
2.7 Self Encapsulate Field
重构的定义
1. 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
2. 使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。
何时重构
三次法则,事不过三,三则重构
3. 重构起源何处
small talk: https://zh.wikipedia.org/wiki/Smalltalk
Bill Opdyke,博士论文,重构领域具有相当高的价值。
坏味道条款
1. duplicate code
2. Long Method
3. Large Class
4. Long Parameter List
5. Divergent Change 发散式变化, 如果某个类经常因为不同的原因在不同的方向上发生变化,divergent change就出现了。
6. Shotgun Surgery 霰弹式修改。如果每遇到某种变化,你就必须在许多不同的类内做出许多小修改,你所面临的坏味道就是shotgun surgery
7. Feature Envy 依恋情结,函数对某个类的兴趣高于对自己所处类的兴趣
8. Date Clumps 数据泥塘
重构工具的技术标准:
1. 程序数据库
2. 解析树
3. 准确性,由工具实现的重构,必须合理保持程序原有行为
重构工具的实用标准:
1. 速度
2. 撤销,重构保持了程序的行为,那么方向重构应该也能够保持程序的行为
3. 与其他工具集成
标签:分解 duplicate field rac phi 霰弹式修改 修改 state模式 变化
原文地址:http://www.cnblogs.com/hongdanning/p/7569955.html