重構-Composing Methods

Refactor
(圖片來自: http://sourcemaking.com/)
以下為學習 Composing Methods 的筆記.

Extract Method

將程式碼抽出,放在方法名稱能解釋其程式碼作用的方法內.

優點: 增加閱讀性. 可重新使用被抽取出的程式碼.

Inline Method

將 A 方法的內容移至呼叫 A 方法的 B 方法中,讓方法內容跟方法名稱能門當戶對. 有時方法內容已經夠簡短清楚了! 就不需要使用 Extract Method!

優點: 減少過度傳遞的呼叫流程,增加閱讀性.

Inline Temp

將所有參考用表示式取代.

優點: 減少不必要的程序碼行數.

Introduce Explaining Variable

利用 變數名稱 或 方法名稱 來解釋並取代陳述式(ex: 落落長的條件判斷式).

優點: 增加閱讀性.

Remove Assignments to Parameters

在方法中,建立一個暫時變數來取代傳入的參數.

千萬不要重新指派傳入的參數,尤其是 Call by Reference 的情況下.

優點: 一個變數不會負擔額外的責任. 避免不小心指派傳入的物件參數.

Replace Method with Method Object

當無法套用 Extract Method 時,可考慮將方法改寫成一個方法物件,所有的變數都變成該方法的成員變數,而原本方法中的程式碼也會變成該方法物件的一個方法,此時再繼續套用 Extract Method .

優點: 封裝實作細節至獨立的物件中.

Replace Temp with Query

若一個暫時變數(Temp)存放著陳述式計算的結果. 將陳述式抽出至一個方法(Ouery),將原本使用該暫時變數的地方改成使用新產生的方法.

優點: 計算實作的方法被封裝在方法當中. 其它地方可重新使用新產生的方法.

Split Temporary Variable

利用同一個暫時變數,不斷去存放不同運算取的結果. 這種情況下,最好是為每一個運算結果產生各自的暫時變數.

優點: 避免混淆. 一個變數只代表一個意義.

Substitute Algorithm

當找到比較簡單的演算法(程式碼),將其替換比較困難的版本.

優點: 越簡單看懂,越簡單維護.

0 則回應: