条款31:将文件间的编译依存关系降至最低
经常出现这样的问题,在头文件里面修改了一点点东西,然后重新的编译,然后就可以慢慢喝茶了。这样的事情当然不希望出现了。如果看看ACE就知道高手是怎么做的了。ACE上很多的类都提供了Imp类型,这用托管的方式就是想把实现屏蔽起来。这样可能存在一些原则需要注意:
如果可以使用指针或者引用,就不需要用对象,因为指针和引用的大小是确定的,但对象就不同了,那么就需要知道对象的实现细节,不利于实现的隐藏。
如果可以尽量使用声明式,而不要使用定义式。将申明式和定义式分在不同的文件中。
在具体实现的时候有两种方式,Handle方式就是imp方式的托管;Interface方式就是定义包含接口定义,而没有成员的抽象类,使用纯虚函数。这些可能带来额外成本,但对于实现来说是有很大好处的。