inline temp
概述
乙個臨時變數,只被乙個簡單表示式賦值一次,而它妨礙了其它重構手法。
動機(motivation)
inline temp多半是作為replace temp with query的一部分來使用。惟一單獨使用inline temp的情況是:你發現某個臨時變數被賦予某個函式呼叫的返回值。一般來說,這樣的臨時變數不會有任何危害,你可以放心地把它留在那兒。但如果這個臨時變數妨礙了其它重構手法---例如extract method,就應該將它inline化。
作法(mechanics)
1、如果這個臨時變數並未被宣告為final,那就將它宣告為final,然後編譯。
這可以檢查該臨時變數是否真的只被賦值一次。
2、找到該臨時變數的所有引用點,將它們替換為為臨時變數賦值的語名中的等號右側表示式。
3、每次修改後,編譯並測試。
4、修改完所有引用點之後,刪除該臨時變數的宣告式和賦值語名。
public class inlinetemp//after inline-temp
public double usersalaryadvanced(string name)
public double usersalary(string name)
return 0;
}}
重構之重新組織資料
一.自封裝字段 你直接訪問乙個字段,但與字段之間的耦合關係逐漸變得笨拙。為這個字段建立取值 設值函式,並且只以這些函式來訪問字段。在字段訪問方式這個問題上,存在兩種截然不同的觀點。其中一派認為,在該變數定義所在的類中,你可以自由訪問它 另一派認為,即使在這個類中你也應該只使用訪問函式間接訪問。兩派之...
重構手法之重新組織函式 5
返回總目錄 本小節目錄 你有乙個大型函式,其中對區域性變數的使用使你無法採用extract method。將這個函式放進乙個單獨物件中,如此一來區域性變數就成了物件內的字段。然後你可以在同乙個物件中將這個大型函式分解為多個小型函式。我們一直在強調,小型函式優美動人。只要將相對獨立的 從大型函式中提煉...
重構手法之重新組織函式 2
返回總目錄 你的程式以乙個臨時變數儲存某一表示式的運算結果。將這個表示式提煉到乙個獨立函式中。將這個臨時變數的所有引用點替換為對函式的呼叫。此後,新函式就可以被其他函式使用。臨時變數的問題在於 只在當前函式可見。如果你在同類的別的地方訪問這個變數,你就必須重新寫表示式來獲取這個變數,這樣的話你就會在...