目錄
一 重構定義
視上下文的不同,“重構”這個詞有兩種不同的定義:
1.1 重構當做名詞
對軟件內部結構的一種調整,目的是在不改變軟件可觀察行爲的前提下,提高其可用性,降低其修改成本。
1.2 重構當做動詞
使用一系列重構手法,在不改變軟件可觀察行爲的前提下,調整其結構。
二 爲何重構
重構是一個工具,它可以用於以下幾個目的:
2.1 重構能改進軟件設計
重構就像是整理代碼,所做的就是讓所有東西回到應處的位置上。代碼結構的流失是積累性的,越難看出代碼的設計意圖,
就越難保護其中設計,於是該設計就腐敗的越快。經常性的重構可以幫助代碼維持自己該有的形態。改進設計的一個重要
方向是消除重複代碼。
2.2 重構使軟件更容易理解
重構可以幫助我們讓代碼更容易被閱讀,一開始進行重構時,你的代碼可以正常運行,但結構不夠理想,在重構上花一點
點時間,就可以讓代碼更好表達自己的用途,這種編程模式的核心就是“準確說出我所要的”。重構可以協助理解不熟悉的
代碼,因爲當你想對一些代碼進行修改時,必須首先理解這個代碼的用途。
2.3 重構幫助找到 bug
2.4 重構提高編程速度
良好的設計是快速開發的根本,事實上,擁有良好設計纔可能做到快速開發。如果沒有良好的設計,或許某一段時間內你
的進展迅速,但惡劣的設計很快就讓你的速度慢下來。你會把時間花在調試上面,無法添加新功能。修改時間越來越長,
因爲你必須花越來越多的時間去理解系統、尋找重複代碼。良好設計是維持軟件開發速度的根本,重構可以幫助你更快速
的開發軟件,因爲它阻止系統腐敗變質,它甚至可以提高設計質量。
三 何時重構
重構本來就不應該是專門花特定時間做的事情,重構應該隨時隨地進行,不應該爲了重構而重構,之所以重構,是因爲你
想做別的事情,而重構可以幫助你把事情做好。
3.1 三次法則
第一次做某件事時只管去做;第二次做類似的事會產生反感,但無論如何還是可以去做;第三次做類似的事情,就該重構。
事不過三,三則重構 。
3.2 添加功能時重構
重構的目的是更好的理解功能,可以更好、更快地添加新功能。
3.3 修補錯誤時重構
如果收到一份錯誤報告,這就是需要重構的信號,因爲顯然代碼還不夠清晰--沒有清晰到讓你一眼看出bug。
3.4 複審代碼時重構
複審可以得到很多好的建議,獲取更高層次的認識,如果不進行重構,很難得到這樣的知識。