1. 程式人生 > >[讀書筆記] 重構改善既有程式碼的設計(1)

[讀書筆記] 重構改善既有程式碼的設計(1)

《重構:改善既有程式碼的設計》已經讀了一大半了,書中講了很多的重構手段和指導原則,但整體感受下來,重構的一個主要目的就是消除重複,放眼看去,眾多的重構手段都是在消除重複程式碼,提煉函式,提煉父類等等。
之後會針對每一章,整理一下讀書筆記,方便之後參閱。

第一章:重構,第一個案例

著一章主要是起到入門的作用,以一個不是很複雜的例子,一步步演示可以進行哪些重構,也用到了後面章節提到的部分重構手段,但是主要目的還是給我們一個關於重構的整體印象。

第二章:重構原則

該章節給出了重構的定義,分別是作為動詞時和作為名詞時:

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

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

也就是說,不管重構是作為動詞還是名詞,它都不涉及新功能方面的內容,也不會新增,修改,刪除已有功能,重構是為了讓程式碼更清晰,更容易修改已有功能,拓展新功能。

重構的原因:

  1. 改進軟體設計。糟糕的設計會給程式碼擴充套件和維護帶來非常多的不便和風險,也會增加開發成本,並且程式碼結構會越來越糟,並且會一錯再錯,於是該設計就腐敗得愈快,此時往往是進行重構得好時機,重新調整設計,給程式碼第二次生命。
  2. 使軟體更容易理解。重構的一個必備的前提條件就是你要首先要弄明白即將重構的程式碼做了什麼,也就是必要要在理解程式碼的基礎上進行重構,否則,你無法保證重構後的程式碼能覆蓋重構前的所有情況,並且沒有bug,這是因為重構並不會伴有第一次實現程式碼的那麼大量全面的測試,否則重構就成了重寫,失去了意義。基於這個前提,每每對一段程式碼進行重構時,我們往往可以看到以前看不到的設計層面的東西。
  3. 幫助找到bug。結合第二條,對程式碼的理解愈深,越容易發現深藏其下的bug。
  4. 提高程式設計速度。良好的設計時維持軟體開發速度的根本,這或許就是所謂的“磨刀不誤砍材功”吧。

重構的時機:

事不過三,三則重構。

  1. 新增功能時重構。因為此時最容易發現之前設計上存在的問題,或者程式碼結構上存在的瑕疵。不要擔心重構會影響新特性的增加時間。

    重構是一個快速流暢的過程,一旦完成重構,新特性的新增就會更快速、更流暢。

  2. 修補錯誤時重構。

  3. 審查程式碼時重構。

當然,並不是所有情況下都可以重構,比如,程式碼根本不能正常運作,此時可能最有效的手段是重寫而不是重構。:(