重構 - 改善既有程式的設計 - Moving Features between Objects
April 18, 2020這篇文章討論《重構 - 改善既有程式的設計》裡的第七章 - Moving Features between Objects
主要會討論程式碼的壞味道中 沒有被提及的重構方法裡面有關於 在物件之間移動特性 的內容
圖片以及程式碼來源自重構 - 改善既有程式的設計
在物件之間移動特性
在重構的過程中 數一數二重要的是 就是決定把責任放在哪 我們有許多重構技巧可以讓我們把責任放在對的類別
Move Method
你的函式如果一直在跟別的類別一直交流 那就讓他去別的類別吧
Extract Class
你的類別做了兩個類別應該做的事 就要分離出一個類別 記得SRP
Inline Class
Move Method的相反 你覺得有一個冗類別的話 就把它刪掉 責任交給別人
Hide Delegate
與其讓客戶層層呼叫服務物件的delegate class 去了解delegate class的細節 不如就在服務物件中提供客戶所需的所有函式 隱藏委託關係
Remove Middle Man
Hide Delegate的反向 就是當你的服務物件提供了太多客戶所需的函式 那不如就讓客戶自己呼叫delegate class吧
Introduce Foreign Method
你所使用的server class需要一個新的函式 但你又不能改server class
做法就是在client class中建立一個函式 並以server class的instance作為參數傳進這個函式
Introduce Local Extension
你所使用的server class需要多個新的函式 但你又不能改server class
做法就是建立一個新類別 讓它去繼承或是Wrap這個server class