[重構]讀書筆記
如果你發現自己需要為程序添加一個特性,而代碼結構使你無法很方便地達成目的,那就先重構那個程序,使特性的添加比較容易進行,然後再添加特性。
沒個傻瓜都能夠寫出計算機能夠理解的代碼,但是唯有寫出人類能夠理解的代碼的程序員,才是優秀的程序員。
第一章
重構步驟
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. 與其他工具集成
[重構]讀書筆記