何爲重構:
- 作爲名詞: 對軟件內部結構的一種調整,目的是在不改變軟件可觀察的行爲的前提下,提高其可理解性,降低其修改成本。
- 作爲動詞:使用一系列重構手法,在不改變軟件可觀察的行爲的前提下, 調整其結構。
爲何重構:
- 重構改進軟件設計
- 重構使軟件更容易理解
- 重構幫助找到bug
- 重構提供編程速度
何時重構:
三次法則:事不過三,三則重構
添加功能時重構
修改錯誤時重構
複審代碼時重構
間接層的價值:
允許邏輯共享
分開解釋意圖和實現
隔離變化
封裝條件邏輯
重構難題:
- 數據庫:在非對象數據庫中解決方法:在對象模型和數據庫模型之間插入一個分隔層,以分隔兩個模型各自的變化。這樣增加系統的複雜度,也帶來了靈活性
- 修改接口:對於已發佈的接口,可保留舊接口。不要過早發佈接口。請修改你的代碼所有權政策,使重構更順暢。
重構與設計:兩者彼此互補,做系統既要預先設計,又要考慮重構
重構與性能:需要性能度量工具來監控程序的運行,大部分消耗在一小段代碼中。
重構起源何處:來源於工作