码迷,mamicode.com
首页 > 其他好文 > 详细

循环物理依赖

时间:2016-03-13 21:10:23      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:

?

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

?

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

    ?

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

      用一个圆角的矩形表示。

    技术分享

    ?

    ?

    ?

    ?

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

?

技术分享技术分享技术分享技术分享技术分享技术分享

?

?

?

?

?

  • 组件之间依赖

    技术分享技术分享

    技术分享技术分享

    技术分享技术分享

    ?

    技术分享技术分享

    ?

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

    说简单一点,就是

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

    2 基础组件2单元测试

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

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

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

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

    ?

    ?

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

    技术分享

    技术分享

    技术分享

    ?

    技术分享

    ?

    ?

    ?

    ?

如上图:

C1 有一个函数 返回C2的对象, C2 有一个函数 返回C1的对象。

C1和C2 是2个独立的组件。那么势必造成 编译时,C1,C2 必须相互链接。(增加链接开销)

测试时:无法单独测试C1 或者 C2 . 因为他们彼此依赖。这就是循环物理依赖,在系统中要尽可能小的循环依赖。

  • 解决循环依赖的方案之一

    引入 一个新的类,成为 C1,C2的高层类。

    ?

    ?

    技术分享

    ?

    ?

    技术分享技术分享

    技术分享技术分享

    ?

    ?

    ?

?

  • 书中的原例子

?

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

技术分享

?

改进之后

?

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

?

循环物理依赖

标签:

原文地址:http://www.cnblogs.com/songr/p/5273126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!