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