原则45:不加选择的使用回调(callback)可能导致难以理解、调试和维护的设计。
原则46:对回调的需求可能是不良的整体体系结构的一个症状。
回调比传统函数更难以理解、维护和调试,应当被当作是最后的手段。
原则47:建立较低层次对象的分等级的所有权,可以使一个系统更容易理解和更可维护。
可以建立一个更高层的管理类来封装耦合代码。
原则48:将独立可测试实现细节分解出来并降级,能够减少维护一个循环依赖类集合的开销。
一个类型具有值语义是指,一个拷贝构造函数和一个赋值运算符对该类型天生就是(在语义上)合法操作。
原则49:在循环物理依赖不可避免的地方,将其升级到尽可能高的层次可减少CCD,甚至可以使循环能够由一个单个的、大小便于管理的组件代替。
原则50:授权友元关系不会产生依赖,但是为了保持封装可能会引起物理耦合。
原则51:什么是和什么不是实现细节取决于物理层次结构内部的抽象级别。
原则52:将封装所在的层次升级,能够消除对一个子系统内协同操作的组件授予私有访问权的需求。
原则53:私有的头文件不是适当的封装替代品,因为它们禁止并排(side-by-side)重用。
定义32:在层次系统中,封装一个类型(该类型定义在头文件内的文件作用域中)意味着隐藏了它的使用而不是隐藏了类型本身。
体系结构的成功层次化要通过"确保没有编程的方法可用来访问作为子系统实例一部分的任何实现类型的任何实例"的方法来获得。
原则54:包装器组件可以用来封装一个子系统内的实现类型的使用,但允许其他类型通过它的接口。
通过使用包装器组件,可以将封装层次升级到子系统的最高层,消除对低层次友元关系的需要,从而也消除了将紧密耦合的类合并成一个单个的超大型组件的必要。