Beautiful Code {16. The Linux Kernel Driver Model: The Benefits of Working Together}

  题目好像很玄的样子,有点《集市与教堂》的味道。

  从代码上来讲,这是一个用c实现面向对象的继承特性,像是解释C++的继承如何实现的。记得有个朋友提醒过我子类对象的内存不一定是父类的内存在后面,虽然实际是这样的,但标准没有要求。

看到((type *)0)->member就感觉很亲切。通过这个宏把一个“父类”的指针转成“子类”的指针,没有类型检查,转错概不负责,作者解释了为什么没有在“父类”中加上类型标识,他觉得程序员应该清楚可不可以转,而不是让代码去判断。这个解释我接受。

  另外作者重点介绍了device结构的演化过程,迭代式的。根据需求对模块拆分,直至每个模块的功能十分单一,比如负责引用计数的模块,然后,通过“继承”把这些合并成一个模块。继承的意义也就在于此,不同层次的抽象。但是,我觉得这个也像组合,虽然组合的模块之间有继承关系,纠结,其实目的都是高内聚,两种方式而已。

  这个迭代的过程就是开源开发者的合作的过程了,对此我只能仰视。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值