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

来源:互联网 发布:c语言中主函数 编辑:程序博客网 时间:2024/06/06 00:45

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

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

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

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

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

原创粉丝点击