2011-02-16

Refactoring 120 - Replace Temp with Query

Bad smell:
  • Long method
使用時機:
  • 使用 temp 變數 keep 一份計算結果,然後不斷地參考到該 temp 變數。
  • Temp 變數太多,導致無法使用 Extract Method,所以先使用 Replace Temp with Query 減少 temp 變數的數量。
方法:
  • 將計算區塊抽出成一個 method,然後將所有指向該 temp 變數的地方改為呼叫該 method。


限制:
  • 該 temp 變數只能被 assign 一次,如果被 assign 多次,得先使用 Split Temporary Variable 將每次 assign 改以不同的 temp 變數取代。
  • 該計算區塊不可以有副作用,也就是必須允許多次呼叫而不會得到不同結果或者影響其他地方,如果有副作用,得先使用 Seperate Query from Modifier 將查詢與修改分開來。
Temp 變數是造成 Long method 的元兇之一。

Temp 變數常用於 loop 加總計算,這種情況必須將整個 loop 區塊抽到 query method 裡。

從同一個 loop 區塊抽出多個 temp 變數,或者呼叫多次 loop 計算 temp 變數對效能影響不大。

沒有留言:

張貼留言