1.模块
模块可大可小,可以是函数,类,功能块等等
一个好的模块应当尽可能独立完成某个功能。
耦合主要描述模块之间的关系, 内聚主要描述模块内部。
通常程序中各模块的内聚程度越高,模块间的耦合程度就越低。我们写程序追求高内聚,低耦合。
2.内聚(块内联系)
模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
模块内部的元素,关联性越强,则内聚越高,单一性越强。如果有各种场景、功能需要被引入到当前模块, 为了维护代码质量, 建议拆分为多个模块。
3.耦合(块间联系)
耦合是各模块之间相互连接的一种度量。
模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。模块之间存在依赖,改动可能会互相影响,关系越紧密,耦合越强,模块独立性越差。
比如模块A直接操作了模块B中数据, 则视为强耦合, 若A只是通过数据与模块B交互, 则视为弱耦合。
独立的模块便于扩展,维护,写单元测试,如果模块之间重重依赖,会极大降低开发效率。
4.原则
追求高内聚,低耦合
(1)高内聚:一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则
(2)低耦合:模块之间的依赖关系弱
(3)解耦:解除耦合关系。
- 模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,只要降低耦合度即可。
- 让数据模型,业务逻辑和视图显示三层之间彼此降低耦合,把关联依赖降到最低,而不至于牵一发而动全身。
- A功能的代码不要写在B的功能代码中,如果两者需要交互,可以通过接口,通过函数,甚至可以引入框架,但总之就是不要直接交叉写。