耦合与内聚

# 耦合的类型(由高到低)

  • 内容耦合

一个模块直接修改或者直接操作另一个模块的数据。

  • 公共耦合

由两个以上的模块共同引用一个全局数据项。

  • 控制耦合

一个模块向另一模块传递一个控制信号,接受信号的模块将依据该信号值进行必要的活动。

  • 标记耦合

两个模块至少有一个通过界面传递的公共参数,包含内部结构,如数组,字符串等。

  • 数据耦合

模块间通过参数传递基本类型的数据。

图形理解

模块A模块A模块B模块B公共数据公共数据私有数据私有数据界面界面界面界面私有数据私有数据公共耦合公共耦合控制耦合控制耦合内容耦合内容耦合复杂数据 标记耦合复杂数据 标记耦合简单数据 数据耦合简单数据 数据耦合Viewer does not support full SVG 1.1

# 内聚的类型(由低到高)

  • 偶然内聚

一个模块之间各成分之间没有任何关系。

  • 逻辑内聚

几个逻辑相关的功能放在同一模块中。

  • 时间内聚

一个模块完成的功能必须在同一时间内完成,而这些功能只是因为时间因素关联在一起。

  • 过程内聚

处理各成分必须以特定的次序执行。

  • 通信内聚

各成分操作都在呕吐难以数据集或生成同一数据集。

  • 顺序内聚

各成分与一个功能相关,且一个成分的输出作为另一成分的输入。

  • 功能内聚

模块的所有成分对完成单一功能是最基本的,且该模块对完成这一功能而言是充分必要的。

图形理解

函数A函数A函数B函数B函数C函数C偶然内聚偶然内聚逻辑内聚逻辑内聚函数A函数A函数B函数B函数C函数C时间内聚时间内聚函数A函数A函数B函数B函数C函数C时间T时间T过程内聚过程内聚函数A函数A函数C函数C函数B函数B函数A函数A函数B函数B函数C函数C通信内聚通信内聚顺序内聚顺序内聚函数A函数A功能内聚功能内聚函数B函数B函数C函数C输出1输出1输出2输出2函数A函数A函数B函数B函数C函数C结果1结果1结果2结果2结果3结果3Viewer does not support full SVG 1.1

高内聚,低耦合。