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