《重構-改善既有代碼的設計》Martin Fowler 摘要: 第十章 簡化函數調用
Rename Method 函數改名
改一個自表達的名字吧!騷年
Add Parameter 添加參數
某個函數需要從調用端得到更多資訊。
為此函數添加一個對象參數,讓該對象代價函數所需資訊。並發編程大多數參數很長,不放在一個類中,因為這樣你可以保證傳遞給函數的參數都是不可修改的。
Remove Parameter 移除參數
移除不必要的某個參數
Separate Query from Modifier 將查詢函數和修改函數分類
某個函數既返回對象狀態值,又修改對象狀態
建立兩個函數,一個查,一個改。多線程一般查改一起,那麼提供第三個方法調另兩個。
Parameterize Method 令函數帶參數
若干函數做了類似的工作,但在函數本體中包含了不同的值
建立單一函數,以參數表達那些不同的值
以“可將少量數值視為參數”為依據,找出帶有重複性的代碼。提煉參數
Replace Parameter with Explicit Methods 以明確函數取代參數
你有一個函數,其中完全取決於參數值而採取不同行為
針對該參數的每一個可能只,建立一個獨立函數。
Preserve Whole Object 保持對象完整
你從某個對象去除若干值,將它們作為某一次函數調用時的參數
改為傳遞整個對象
Replace Parameter with Methods 以函數取代參數
對象調用某個函數,並將所得結果作為參數,傳遞給另一個函數。而接受該參數的函數本身也能夠調用前一個函數。
讓參數接受者去除該項參數,並直接調用前一個函數。
Introduce Parameter Object 引入參數對象
某些參數總是很自然地同時出現。
以一個對象取代這些參數。
還可以適當的行為從其他函數移到這個建立對象中。
Remove Setting Method 移除設定函數
類中某個欄位應該在對象建立時被設定,然後就不再改變。
Hide Method 隱藏函數
沒有被其他任何類用到
Replace Constructor with Factory Method 以工廠函數取代建構函式
希望建立對象時不僅僅是做簡單的構建動作
Encapsulate Downcast 封裝向下轉型
某個函數返回的對象,需要由函數調用者執行向下轉型
將向下轉型動作移到函數中
Replace Error Code with Exception 以異常取代錯誤碼Replace Exception with Test 以測試取代異常
面對一個調用者可以預先檢查的條件,你拋出了一個異常
修改調用者,使它在調用函數之前先做檢查