这几天在翻大规模C++程序设计,看到第5章。
- 这本书,强调基于组件进行程序设计。
- 所谓组件,树上的定义是,一个.h 和一个.c文件组成一个组件。
用一个圆角的矩形表示。
- 一个组件中可以有一个或多个相关的类
- 组件之间依赖
- 这本书强调组件级别测试
说简单一点,就是
1 基础组件1 写单元测试。
2 基础组件2单元测试
3 高层组件1 带着基础组件1,基础组件2 做单元测试(这种行为书中叫增量测试)
4 高层组件2带着基础组件1,基础组件2座单元测试(增量测试)
5 不停的增量测试,类比的例子,测试汽车的基础零件,再测试汽车使用了基础零件的子系统(发动机?),….一直到测试整个汽车。
- 为了增量测试,必须拒绝循环依赖
循环依赖,就是指,2个组件彼此引用对方。
如上图:
这样会
1增加链接开销
- 测试时:无法单独测试C1 或者 C2 . 因为他们彼此依赖。这就是循环物理依赖,在系统中要尽可能小的循环依赖。
- 解决循环依赖的方案之一:升级 (提供一个新类,将耦合部分升级成一个新类)
书中的原例子
之前windows和 Retage相互依赖 windows可以隐式转换为Rectangle,Rectangle可以隐式转换为window
改进之后
这样就可以单独测试 windows ,retangle,boxutil,(似乎是增加了组件数量,而且转换也必须是显示的,但是为减少依赖,在大型项目中的链接时间,增加可测试性是值得的)