c++编程, 解除文件间的依赖关系,接口隔离原则

c++编程, 解除文件间的依赖关系,接口隔离原则

这里所指的接口隔离,是把不同的接口包在不同的文件中.相关联的接口包在一个文件中.

我曾经贪图方便,使用过集中管理的方式.
集中管理的全局变量 global.h,global.cpp
集中管理的全局函数 subs.h subs.cpp

所有的全局变量放在一个文件中叫global.cpp
其对应的头文件是global.h, 用以对外声明全局变量,

好处,
1. 添加变量方便. 在global.cpp中添加变量,在global.h中添加声明就可以了
2. 使用方便.       使用全局变量的文件只要包含global.h 就可以了.
3. 查找方便.    查找全局变量很容易,在一个文件中就可以了.

项目小时,文件也少,感觉还是挺爽的,但随着项目的扩大,文件的增多,它的坏处就显示出来了.

坏处.
1. 含义不太明确: 这么多全局变量集中在一起,虽然加注释也不太清楚其具体用途了.
2. 依赖关系太强(强耦合), 只要动了global.h, 包含它的每一个文件都要重新编译,尽管这些文件跟新建的变量根本没有关系.

第二条不符合软件设计原则,所以我把global.h, global.cpp 删掉了,将这些变量分布到各自该去的文件中.
解除了文件间强依赖. 改动文件时,只有相关的文件才需要编译,节省了编译时间


集中管理的全局函数跟上面所说的全局变量的优点缺点是一样的,
我增加一条或删除一条函数,都会引起包含该头文件的所有文件编译,
等待这些无聊的不该编译的东西很无趣. 所以我删除了subs.h, subs.cpp, 将函数拆分分到不同的文件中.


这个做法,实际是满足了一个设计原则,叫接口隔离原则.
把所有的东西都放在一起,耦合性太强,会引起不必要的编译过程,所以要分割文件,实现解耦合!

分割为几个文件? 每个文件都包含那些接口,这有功能划分问题,依据单一功能原则和接口隔离原则进行.

这里所说的原则套用了设置模式中所说的原则,它们是相通的.

引起文件编译的原因是你包含了头文件,而该头文件发生了变化,则该文件被编译.makefile 是依据这个规则来编译的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值