重構手法一重新組織函數

1. Extract Method 提煉方法

過長的函數或者有需要寫註釋才能讓人理解用途的地方,提煉加強代碼的清晰度

1)創造新函數命名

2)提煉代碼拷入

3)檢查代碼中作用域範圍的變量

4)局部變量值得改變

5)需要設置參數

6)編譯替換測試

2.Inline Method 內聯函數

內部代碼和函數名稱一樣很清晰,應該去掉這個函數

1)檢查函數 不具有多態

2)找出所有調用點

3)替換爲代碼本體

4)編譯測試刪除

3.Inline Temp 內聯臨時變量

臨時變量只被賦值一次 被一個簡單的表達式

1)檢查確認賦值右邊表達式沒有副作用

2)嘗試設置爲final試試能否編譯確認只被賦值一次

3)找到引用點替換

4)修改編譯測試

4. Replace Temp With Query

以一個臨時變量保存某一表達式的運算結果,替換後方便多處引用。

1)找出被賦值一次的變量

2)提取到獨立函數

注意3和4的區別,3中是賦值給一個函數返回值,影響其他重構手法時候替換。4是爲了方便調用,但最終結果都是類似去掉臨時變量。

5. Introduce Explaining Variable引入解釋性變量

增加臨時變量,解釋複雜的一些邏輯

1)聲明final臨時變量

2)運算結果的一部分替換

6. 分解臨時變量

對每次賦值,創造一個獨立對應的臨時變量,除了循環變量和結果收集變量

1)增加final 修改前者名稱

2)以賦值爲界 檢查

7. Remove Assignments to Parameters 移除對參數的賦值

代碼對一個參數進行賦值,以一個臨時變量來取代參數的位置。

1)建立臨時變量

2)修改賦值語句

8.Replace Method with Method Object 以函數對象取代函數

大型函數,局部變量使用使你無法提取方法,將大型函數放入一個對象,這樣局部變量就成了對象內字段,然後就可以在對象內將大型函數分解

強調了小型函數的優美。

9. Substitue Algorithm替換算法

將函數本體替換爲另一個算法,更清晰的算法




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章