重構 - 改善既有程式的設計 - Duplicated Code
April 15, 2020這篇文章討論《重構 - 改善既有程式的設計》裡的3.1 - Duplicated Code
圖片以及程式碼來源自重構 - 改善既有程式的設計
重複的程式碼
就是重複的程式碼 這是比Alternative Classes with Different Interfaces更通用的情況
解法 - 重複的程式碼在同一個類別的情況
Extract Method
解法 - 重複的程式碼是發生在相同level的兩個不同subclass
Pull Up Field
就是把欄位提到superClass
Pull Up Method
就是把方法提到superClass
Pull Up Constructor
就是把會重複使用的建構子放到superClass
變成
Form Template Method
兩個subClass有相似的演算法結構 就用Template method
解法 - 重複的程式碼是發生在不同的類別
Extract SuperClass
那就可以考慮把相同的部分提煉出一個共同的SuperClass 達到Code reuse
Extract Class
如果無法繼承 就考慮復合
解法 - 一般情況
Consolidate Conditional Expression
把相同結果的if-condition合併
變成
Consolidate Duplicate Conditional Fragments
合併重複的條件片段
變這樣