1. 程式人生 > >[重構]讀書筆記

[重構]讀書筆記

技術 ext change gun with str dup 發生 代碼結構

如果你發現自己需要為程序添加一個特性,而代碼結構使你無法很方便地達成目的,那就先重構那個程序,使特性的添加比較容易進行,然後再添加特性。

沒個傻瓜都能夠寫出計算機能夠理解的代碼,但是唯有寫出人類能夠理解的代碼的程序員,才是優秀的程序員。

第一章

重構步驟

1. 為即將修改的代碼建立一組可靠的測試環境。測試機制再重構領域的地位很重要。

2. 分解並重組

  2.1 extract

  2.2 move

  2.3 replace temp with query

  2.4 State模式 Gang of four,一個對象

  2.5 Replace Type Code with State/Strategy

  2.6 Replace Conditional with Polymorphism

  2.7 Self Encapsulate Field

第二章 重構原則

重構的定義

1. 對軟件內部結構的一種調整,目的是在不改變軟件可觀察行為的前提下,提高其可理解性,降低其修改成本。

2. 使用一系列重構手法,在不改變軟件可觀察行為的前提下,調整其結構。

何時重構

三次法則,事不過三,三則重構

3. 重構起源何處

small talk: https://zh.wikipedia.org/wiki/Smalltalk

Bill Opdyke,博士論文,重構領域具有相當高的價值。

第三章 代碼的壞味道

壞味道條款

1. duplicate code

2. Long Method

3. Large Class

4. Long Parameter List

5. Divergent Change 發散式變化, 如果某個類經常因為不同的原因在不同的方向上發生變化,divergent change就出現了。

6. Shotgun Surgery 霰彈式修改。如果每遇到某種變化,你就必須在許多不同的類內做出許多小修改,你所面臨的壞味道就是shotgun surgery

7. Feature Envy 依戀情結,函數對某個類的興趣高於對自己所處類的興趣

8. Date Clumps 數據泥塘

第十四章 重構工具

重構工具的技術標準:

1. 程序數據庫

2. 解析樹

3. 準確性,由工具實現的重構,必須合理保持程序原有行為

重構工具的實用標準:

1. 速度

2. 撤銷,重構保持了程序的行為,那麽方向重構應該也能夠保持程序的行為

3. 與其他工具集成

[重構]讀書筆記