-
作法(Mechanics)
-
檢查函數(shù),確定它不具多態(tài)性(is not polymorphic).==>如果subclass繼承了這個函數(shù),就不要將此函數(shù)inline化,因為subclass無法覆寫(override)一個根本不存在的函數(shù).
-
找出這個函數(shù)的所有被調(diào)用點.
-
將這個函數(shù)的所有被調(diào)用點都替換為函數(shù)本體(代碼).
-
編譯,測試.
-
刪除該函數(shù)的定義.
被我這樣一寫,Inline Method(117)似乎很簡單.但情況往往并非如此.對于遞歸調(diào)用,多返回點,inline至另一個對象中而該對象并無提供訪問函數(shù)(accessors)......,每一種情況我都可以寫上好幾頁.我之所以不寫這些特殊情況,原因很簡單:如果你遇到了這樣的復(fù)雜情況,那么就不應(yīng)該使用這個重構(gòu)手法.