原则41:哑数据可以用来打破in-name-only依赖,促进易测试性和减少实现的大小,但是,不透明指针可以同时保持类型安全和封装;而哑数据通常是不能的。
例子:用整数作为索引,而不是用迭代器访问容器内的数据。该索引只在一个有限的上下文中有意义。
应用环境:某些引用在子系统的较低层次不必解释,而只在某个(通常)较高层次的对象的上下文中解释。在这种受约束的上下文中,尽管会损害类型安全和封装,但实现可以更简洁。哑数据的使用是典型的低层次实现细节,通常不会暴露在较高层次子系统的接口中。
原则41:哑数据可以用来打破in-name-only依赖,促进易测试性和减少实现的大小,但是,不透明指针可以同时保持类型安全和封装;而哑数据通常是不能的。
例子:用整数作为索引,而不是用迭代器访问容器内的数据。该索引只在一个有限的上下文中有意义。
应用环境:某些引用在子系统的较低层次不必解释,而只在某个(通常)较高层次的对象的上下文中解释。在这种受约束的上下文中,尽管会损害类型安全和封装,但实现可以更简洁。哑数据的使用是典型的低层次实现细节,通常不会暴露在较高层次子系统的接口中。