这几天在翻大规模C++程序设计,看到第5章。

 

  • 这本书,强调基于组件进行程序设计。

     

    • 所谓组件,树上的定义是,一个.h 和一个.c文件组成一个组件。

      用一个圆角的矩形表示。

     

     

     

     

     

    • 一个组件中可以有一个或多个相关的类

 

 

  • 组件之间依赖

 

 

  • 这本书强调组件级别测试

    说简单一点,就是

    1 基础组件1 写单元测试。

    2 基础组件2单元测试

    3 高层组件1 带着基础组件1,基础组件2 做单元测试(这种行为书中叫增量测试)

    4 高层组件2带着基础组件1,基础组件2座单元测试(增量测试)

    5 不停的增量测试,类比的例子,测试汽车的基础零件,再测试汽车使用了基础零件的子系统(发动机?),….一直到测试整个汽车。

  • 为了增量测试,必须拒绝循环依赖

     

     

    循环依赖,就是指,2个组件彼此引用对方。

     

     

如上图:

这样会

1增加链接开销

  1. 测试时:无法单独测试C1 或者 C2 . 因为他们彼此依赖。这就是循环物理依赖,在系统中要尽可能小的循环依赖。
  • 解决循环依赖的方案之一:升级 (提供一个新类,将耦合部分升级成一个新类)

    书中的原例子

 

之前windows和 Retage相互依赖 windows可以隐式转换为Rectangle,Rectangle可以隐式转换为window

 

改进之后

 

这样就可以单独测试 windows ,retangle,boxutil,(似乎是增加了组件数量,而且转换也必须是显示的,但是为减少依赖,在大型项目中的链接时间,增加可测试性是值得的)

 

posted on 2016-03-13 21:18  zooz  阅读(317)  评论(0编辑  收藏  举报