免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3911 | 回复: 7
打印 上一主题 下一主题

[C] 库封装的问题,A库封装了B库,以供程序P使用,那么A库不应该再要求程序P去引用B头文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-20 09:00 |只看该作者 |倒序浏览
如题,A库封装了B库,以供程序P使用,那么A库不应该再要求程序P去引用B的头文件,我认为库封装必须要做到这一点,比如我将printf函数做了封装,要求用户引用我的头文件myprintf.h即可,如果我的封装不彻底,用户调用时发现如果不把我的库用到的stdio.h引用进来的话则编译不过,那么肯定是我的封装出了问题,如果我做不到的话,那么我要考虑这个封装是不是真的有必要了。
以上是我的理解,但是我没有找到对这个理解的比较权威的说法,希望大家帮我找一下,有没有这个理论。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
2 [报告]
发表于 2013-10-20 09:10 |只看该作者
这不搞成循环依赖了吗?

论坛徽章:
0
3 [报告]
发表于 2013-10-20 10:02 |只看该作者
这个不算是循环依赖吧,只能算是封装不彻底

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
4 [报告]
发表于 2013-10-20 20:08 |只看该作者
如果你只暴露A库的API, 那么B库的头文件对用户是没意义的, 你在A库的实现中包含B库的头文件才是正确的做法.

论坛徽章:
208
巨蟹座
日期:2013-09-02 09:16:36卯兔
日期:2013-09-02 20:53:59酉鸡
日期:2013-09-05 21:21:45戌狗
日期:2013-10-15 20:51:17寅虎
日期:2013-10-18 21:13:16白羊座
日期:2013-10-23 21:15:19午马
日期:2013-10-25 21:22:48技术图书徽章
日期:2013-11-01 09:11:32双鱼座
日期:2013-11-01 20:29:44丑牛
日期:2013-11-01 20:40:00卯兔
日期:2013-11-11 09:21:32酉鸡
日期:2013-12-04 19:56:39
5 [报告]
发表于 2013-10-21 09:20 |只看该作者
killdog1982 发表于 2013-10-20 09:00
如题,A库封装了B库,以供程序P使用,那么A库不应该再要求程序P去引用B的头文件,我认为库封装必须要做到这一 ...

nod,不过有时候要在效率和实际中妥协
比如,要用到B的结构太多,基本是直接传递,你就没必要再去封一边啊,这样反而效率低下

论坛徽章:
0
6 [报告]
发表于 2013-10-22 18:42 |只看该作者
封装成库的目的是简化编程,如果“要用到B的结构太多”,这说明:1 库封装的有问题   2对外接口有问题。
如果A重封装可以解决,重做一遍也是值得的。
对外的接口越简单越好,不应该出现主程序用到库里大量的数据结构或变量。最好只有几个函数,比如 Init, Uninit, DoXXX。

论坛徽章:
0
7 [报告]
发表于 2013-10-22 18:43 |只看该作者
pthread库的封装比较经典

论坛徽章:
1
综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00
8 [报告]
发表于 2013-10-23 05:59 |只看该作者
呵呵。  有一阵子我也纠结过循环include的问题,比如多次Include会咋样,结果还是没搞明白 @_@
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP