-
作法(Mechanics)
-
检查函数,确定它不具多态性(is not polymorphic).==>如果subclass继承了这个函数,就不要将此函数inline化,因为subclass无法覆写(override)一个根本不存在的函数.
-
找出这个函数的所有被调用点.
-
将这个函数的所有被调用点都替换为函数本体(代码).
-
编译,测试.
-
删除该函数的定义.
被我这样一写,Inline Method(117)似乎很简单.但情况往往并非如此.对于递归调用,多返回点,inline至另一个对象中而该对象并无提供访问函数(accessors)......,每一种情况我都可以写上好几页.我之所以不写这些特殊情况,原因很简单:如果你遇到了这样的复杂情况,那么就不应该使用这个重构手法.