模块化编程本质探讨
【篇首】
模块是一个广泛使用的概念,其意义与上下文密切相关。举个例子:
蚂蚁对蛤蟆说:“哇,你好大啊”
大象对蛤蟆说:“哇,你好小啊”
(蛤蟆问了:“我是大还是小啊?”)
如果我们站在大象的立场,蛤蟆是很小的。而站在蚂蚁的立场,蛤蟆是大的。你不知道蛤蟆的大小是因为你站在蛤蟆的立场。(开个玩笑)
模块表示的是对一个大事物的分割粒度。对于类这个大事物,模板可能就是一个个成员函数;对于一个可执行程序这个大事物,模块是一个个DLL;对于一个WINDOWS操作系统,模块如文件子系统等东西。
要想知道模块是什么,你得知道你心目中面对的所谓大事物是什么?
【引言】
1)模块是按功能分的。 跟类 和 文件没有根本的联系。
2)如果是一个文件的话,如何确保高内聚,低耦合,将相关概念的类的定义都放入这个文件中吗?
---这个跟类 存放的物理位置(在哪个文件中)无关的。
是指 类之间的独立(/关联,引用,调用)程度。(我的理解)
3)一般来说完成某个功能的部分就可以称为一个模块。
比如一个小工具,实现某个功能的某个函数可以称为模块。
一个类也可以称为模块。
某个组件化的软件,实现特定功能的动态(静态)库可以称为模块。
4)应该是完成了某一部分功能的类或者文件的集合吧
5)C++的模块一般是指一组函数的集合,来实现某一领域特定的功能。表现形式可以是封装在dll中的一组接口,也可以是在某个namespace下的一组API等等,主要是一个逻辑概念。
6)模块的概念在oo之前,其实与oo还没什么关系。C++不是纯oo的,它包含很多思想。
7)模块是指:一组相关的过程与被它们操作的数据组织在一起。
8)一个功能模块,一般实现为dll,这样可以达到重用的目的。
9)多数情况下为一个类,cpp和h。可以是文件, 也可以是类,甚至也可以是一个函数,只要它完成一个功能,它就可以视为一个模块
10)一般设计要求:
功能少
接口少
依赖少
内部细节不详,但是接口要少,最好是通过一个单独的Imp实现虚接口
未必要独立成DLL,但是一定要耦合度低,内部要完整
另外重用度高是模块的价值所在
11)设计中所提到的模块,是指拥有一系列紧密相关功能的实体集合,比如N个类或者一堆函数.在c++中所提到的模块,如果从编译角度出发,可以称为是可以单独编译的编译单位. 其实模块的解释有很多,不同的角度有不同的内涵,不必刻意去追究. 在不同的地方, 搞清它相对确切的内涵也就是了.
12)模块完全是一个软件工程中,软件设计阶段遇到的概念,是一种思想,是一个让你把一个无法解决的大问题分成方便解决的小问题的方法。其中每一个小问题的具体解决方法就是一个模块。所谓强内聚弱耦合就是让你解决小问题的时候尽量少的去牵连其他问题。而具体的实现则可以用很多方法,类派生对象就是一种典型的模块pulic声明的成员就是和模块联系的纽带,而保护成员就是你强内聚的表现~
模块是一种思想!