百度空间 | 百度首页 
               
 
查看文章
 
代码重构简介
2006-10-30 14:07

.重構原則

1.重構的定義

重構(名詞):對軟體內部結構的一種調整,目的是在不改變"軟體之可察行為"前提下,提高其可理解性,降低其修改成本.

重構(動詞):使用一系列重構準則(手法),在不改變"軟體之可察行為"前提下,調整其結構.

兩種定義都強調是在不改變"軟體的外部行為"前提下,不改變"軟體之可察行為"就是說讓修改不影響外部使用程式(程式師),在個外部來看,程式的行為和結果沒有任何的變化.重構只是對程式內部結構進行調整,讓代碼更加容易理解,然後更容易維護.

2.重構的好處

能改進軟體設計

使軟體更容易被理解

能幫你找到bug

提高軟體的開發速度

3.什麼時候進行重構

三次法則:事不過三,三則重構.意思是說,一件事情,第一次只管去做,第二次做類似的事情會產生反感,但無論如何還是做了,第三次再做類似的事情,你就應該重構.

在添加新功能時進行重構.

在修改bug時進行重構

在代碼復審時進行重構.

4.為什麼重構有用

難以修改的程式具有以下特徵:

難以閱讀的程式,難以修改

邏輯重複的程式,難以修改

添加新行為時需要修改現有的代碼,難以修改

帶複雜條件邏輯的程式,難以修改

好的程式應該是:

容易閱讀

所有邏輯都只在惟一地點指定

新的改動不會危及現有的行為

盡可能簡單的表達條件邏輯

5.間接層和重構

間接層的存在的價值:

允許邏輯共用

分開解釋意圖和實現

將變化加以隔離

將條件邏輯加以編碼

但是過多的間接層會導致代碼的層次太深,使代碼難以閱讀.因此要權衡加入間接層的利弊.

6.重構的難題

關聯資料庫與面向物件編程的問題:在物件模型和資料庫模型之間插入一個分隔層,這就可以隔離兩個模型各自的變化.升級某一模型時無需同時升級上述的分隔層即可.這樣的分隔層會增加系統複雜度.但是能增加靈活度.

修改介面的問題:修改已發佈的介面,因為已發佈的介面會供外部人員(其他公司)使用,因此,修改介面會導致引用介面的其他程式不修改程式就無法運行.修改介面的最好的辦法是增加一個新的介面,讓舊介面調用新介面.這樣原來的程式就不用修改了.對於介面的另一個建議是儘量不要發佈介面.

7.什麼時候不進行重構

現有的程式無法運行,此時應該是重寫程式,而不是重構

程式到了最後的交付期限

8.重構與設計

重構與設計是互補的,程式應該是先設計,而在開始編碼後,設計上的不足可以用重構來彌補.設計應該是適度的設計,而不必過度的設計.如果能很容易的通過重構來適應需求的變化,那麼就不必過度的設計,當需求改變時再重構代碼.

9.重構與性能

提高性能的三種方法:

時間預算法:在設計時就對程式花費的時間進行預算,通常用於性能要求極高的即時系統.普通的企業應用程式一般對性能要求不高.只要不太慢就可以了.

持續關注法:要求程式師在任何時間都要設法保持系統的高性能.這個方法有個缺陷,就是大部分的程式90%的優化工作都是白費勁,這樣會浪費大量的時間.

良好的分解方式:這個方式是在開發程式階段不對性能投以任何關注,直到進入性能優化階段,再分析程式中性能差的程式,然後對這些程式進分解,查出性能差的程式,進行優化.


类别:资料积累 | 添加到搜藏 | 浏览() | 评论 (3)
 
最近读者:
 
网友评论:
1
2008-05-30 14:38 | 回复
一.重构原则 1.重构的定义 重构(名词):对软件内部结构的一种调整,目的是在不改变"软件之可察行为"前提下,提高其可理解性,降低其修改成本. 重构(动词):使用一系列重构准则(手法),在不改变"软件之可察行为"前提下,调整其结构. 两种定义都强调是在不改变"软件的外部行为"前提下,不改变"软件之可察行为"就是说让修改不影响外部使用程序(程序员),在个外部来看,程序的行为和结果没有任何的变化.重构只是对程序内部结构进行调整,让代码更加容易理解,然后更容易维护. 2.重构的好处 能改进软件设计 使软件更容易被理解 能帮你找到bug 提高软件的开发速度 3.什么时候进行重构 三次法则:事不过三,三则重构.意思是说,一件事情,第一次只管去做,第二次做类似的事情会产生反感,但无论如何还是做了,第三次再做类似的事情,你就应该重构. 在添加新功能时进行重构. 在修改bug时进行重构 在代码复审时进行重构. 4.为什么重构有用 难以修改的程序具有以下特征: 难以阅读的程序,难以修改 逻辑重复的程序,难以修改 添加新行为时需要修改现有的代码,难以修改 带复杂条件逻辑的程序,难以修改 好的程序应该是: 容易阅读 所有逻辑都只在惟一地点指定 新的改动不会危及现有的行为
 
2
2008-05-30 14:38 | 回复
6.重构的难题 关系数据库与面向对象编程的问题:在对象模型和数据库模型之间插入一个分隔层,这就可以隔离两个模型各自的变化.升级某一模型时无需同时升级上述的分隔层即可.这样的分隔层会增加系统复杂度.但是能增加灵活度. 修改接口的问题:修改已发布的接口,因为已发布的接口会供外部人员(其它公司)使用,因此,修改接口会导致引用接口的其它程序不修改程序就无法运行.修改接口的最好的办法是增加一个新的接口,让旧接口调用新接口.这样原来的程序就不用修改了.对于接口的另一个建议是尽量不要发布界面. 7.什么时候不进行重构 现有的程序无法运行,此时应该是重写程序,而不是重构 程序到了最后的交付期限 8.重构与设计 重构与设计是互补的,程序应该是先设计,而在开始编码后,设计上的不足可以用重构来弥补.设计应该是适度的设计,而不必过度的设计.如果能很容易的通过重构来适应需求的变化,那么就不必过度的设计,当需求改变时再重构代码. 9.重构与性能 提高性能的三种方法: 时间预算法:在设计时就对程序花费的时间进行预算,通常用于性能要求极高的实时系统.普通的企业应用程序一般对性能要求不高.只要不太慢就可以了. 持续关注法:要求程序员在任何时间都要设法保持系统的
 
3
2008-06-16 10:36 | 回复
还是楼上的实在
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu