重构的定义

. 重构原则
 
1.重构的定义
重构 ( 名词 ): 对软件内部结构的一种调整 , 目的是在不改变 " 软件之可察行为 " 前提下 , 提高其可理解性 , 降低其修改成本 .
重构 ( 动词 ): 使用一系列重构准则 ( 手法 ), 在不改变 " 软件之可察行为 " 前提下 , 调整其结构 .
两种定义都强调是在不改变 " 软件的外部行为 " 前提下 , 不改变 " 软件之可察行为 " 就是说让修改不影响外部使用程序 ( 程序员 ), 在个外部来看 , 程序的行为和结果没有任何的变化 . 重构只是对程序内部结构进行调整 , 让代码更加容易理解 , 然后更容易维护 .
 
2.重构的好处
能改进软件设计
使软件更容易被理解
能帮你找到 bug
提高软件的开发速度
 
3.什么时候进行重构
三次法则 : 事不过三 , 三则重构 . 意思是说 , 一件事情 , 第一次只管去做 , 第二次做类似的事情会产生反感 , 但无论如何还是做了 , 第三次再做类似的事情 , 你就应该重构 .
在添加新功能时进行重构 .
在修改 bug 时进行重构
在代码复审时进行重构 .
 
4.为什么重构有用
难以修改的程序具有以下特征 :
难以阅读的程序 , 难以修改
逻辑重复的程序 , 难以修改
添加新行为时需要修改现有的代码 , 难以修改
带复杂条件逻辑的程序 , 难以修改
好的程序应该是 :
容易阅读
所有逻辑都只在惟一地点指定
新的改动不会危及现有的行为
尽可能简单的表达条件逻辑
 
5.间接层和重构
间接层的存在的价值 :
允许逻辑共享
分开解释意图和实现
将变化加以隔离
将条伯逻辑加以编码
但是过多的间接层会导致代码的层次太深 , 使代码难以阅读 . 因些要权衡加入间接层的利弊 .
 
6.重构的难题
关系数据库与面向对象编程的问题 : 在对象模型和数据库模型之间插入一个分隔层 , 这就可以隔离两个模型各自的变化 . 升级某一模型时无需同时升级上述的分隔层即可 . 这样的分隔层会增加系统复杂度 . 但是能增加灵活度 .
修改接口的问题 : 修改已发布的接口 , 因为已发布的接口会供外部人员 ( 其它公司 ) 使用 , 因此 , 修改接口会导致引用接口的其它程序不修改程序就无法运行 . 修改接口的最好的办法是增加一个新的接口 , 让旧接口调用新接口 . 这样原来的程序就不用修改了 . 对于接口的另一个建议是心尽量不要发布接口 .
 
7.什么时候不进行重构
现有的程序无法运行 , 此时应该是重写程序 , 而不是重构
程序到了最后的交付期限
 
8.重构与设计
重构与设计是互补的 , 程序应该是先设计 , 而在开始编码后 , 设计上的不足可以用重构来弥补 . 设计应该是适度的设计 , 而不必过度的设计 . 如果能很容易的通过重构来适应需求的变化 , 那么就不必过度的设计 , 当需求改变时再重构代码 .
 
9.重构与性能
提高性能的三种方法 :
时间预算法 : 在设计时就对程序花费的时间进行预算 , 通常用于性能要求极高的实时系统 . 普通的企业应用程序一般对性能要求不高 . 只要不太慢就可以了 .
持续关注法 : 要求程序员在任何时间都要设法保持系统的高性能 . 这个方法有个缺陷 , 就是大部分的程序 90% 的优化工作都是白费劲 , 这样会浪费大量的时间 .
良好的分解方式 : 这个方式是在开发程序阶段不对性能投以任何关注 , 直到进入性能优化阶段 , 再分析程序中性能差的程序 , 然后对这些程序进分解 , 查出性能差的程序 , 进行优化 .

猜你喜欢

转载自fanjf.iteye.com/blog/2007027