1、Rename Method(函數改名)
2、Add Parameter(添加參數)
3、Remove Parameter(移除參數)
4、Separate Query from Modifier(將查詢函數和修改函數分離)
某個函數既返回對象狀態值,又修改對象狀態。建立兩個不同的函數,其中一個負責查詢,另一個負責修改。
5、Parameterize Method (令函數攜帶參數)
若干函數做了類似的工作,但在函數本地中卻包含了不同的值。建立單一函數,以參數表達那些不同的值。提煉重複代碼,將“少量數值視爲參數”。
6、Replace Parameter with Explicit Methods(以明確函數取代參數)
有一個函數,其中完全取決於參數值而採取不同行爲。針對該參數的每一個可能值,建立一個獨立函數。
7、Preserve Whole Object(保持對象完整)
你從某個對象中取出若干值,將它們作爲某一次函數調用時的參數。改爲傳遞整個對象。
8、Replace Parameter with Methods(以函數取代參數)
對象調用某個函數,並將所得結果作爲參數,傳遞給另一個函數。並且另一個函數本身也能調用前一個函數。讓參數接受者去除該項參數,並直接調用前一個函數。
9、Introduce Parameter Object(引入參數對象)
某些參數總是很自然地同時出現。以一個對象取代這些參數。
10、Remove Setting Method(移除設置函數)
類中的某個字段應該在對象創建時被設值,然後就不再改變。去掉該字段的所有設置函數。
11、Hide Method(隱藏函數)
又一個函數,從來沒有被其他任何類用到。將這個函數改爲private。儘可能降低所有函數的可見度。
12、Replace Constructor with Factory Method(以工廠函數取代構造函數)
將構造函數替換爲工廠函數。
13、Encapsulate Downcast(封裝向下轉型)
14、Replace Error Code with Exception(以異常取代錯誤碼)
某個函數返回一個特定的代碼,用以表示某種錯誤情況。改用異常。
(2)、找到該函數的調用者,對它們進行相應調整,讓它們使用異常:如果函數拋出非受控異常,那麼就調整調用者,使其在調用函數前做適當檢查;如果拋出受控異常,那麼就調整調用者,使其在try區域中使用
15、Replace Exception with Test(以測試取代異常)
面對一個調用者這可以預先檢查的條件,拋出了一個受控異常。