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