9.5 减少混乱

在本书里,把类里的内联定义做得简单和精练是非常有用的,因为这样更容易放在一页或一屏里,看起来更方便一些。但Dan Saks[1]指出,在一个真正的工程里,这将造成类接口混乱,因此使类难以使用。他用拉丁文in situ(在适当的位置上)来表示定义在类里的成员函数,并主张所有的定义都放在类外面以保持接口清楚。他认为这并不妨碍最优化。假如想优化,那么使用关键字inline。使用这个方法,前面(8.2.2节)的例子Rectangle.cpp修改如下:

9.5 减少混乱 - 图1

现在假如想比较一下内联函数与非内联函数的使用效果,可以简单地去掉关键字inline。(内联函数通常应该放在头文件里,但非内联函数必须放在它们自己的编译单元里。)假如想把函数放入文件,只用简单的剪切和粘贴操作就可完成。in situ函数需要更多的操作,且可能隐藏更多错误。这个方法的另外一个争论是可能总是对于函数定义使用一致的格式化类型,但有些并没有总是以in situ函数形式出现。

[1]和Tom Plum合著了《C++Programming Guidelines》,Plum Hall,1991.