耦合和内聚就是描述sc结构模块图中模块之间的关系
完全正确
- 内聚:描述单个模块内部元素联系紧密程度
- 耦合:描述多个模块之间相互依赖关联程度
二者都是用来评判SC模块结构图设计好坏的核心指标
一、内聚(管自己)
定义
一个模块内部所有功能、代码聚合在一起的紧密程度
目标:越高越好
从差→优排序(必背)
- 偶然内聚:毫无关联,随便凑一起
- 逻辑内聚:功能逻辑相似,实际业务无关
- 时间内聚:同一时间段执行的代码放一起
- 过程内聚:按执行流程顺序组合
- 通信内聚:操作同一批数据
- 顺序内聚:前一个输出是后一个输入,串行执行
- 功能内聚(最优):模块只做单一完整一件事
二、耦合(管别人)
定义
不同模块之间互相牵连、依赖的程度
目标:越低越好
从差→优排序(必背)
- 内容耦合:直接修改另一模块内部数据/代码(最差)
- 公共耦合:共用全局变量、公共数据区
- 外部耦合:共用外部环境、外部格式
- 控制耦合:传递控制标志、状态开关(空心控制流)
- 标记耦合:传递复合数据结构(结构体、对象)
- 数据耦合(最优):只传简单业务数据(实心数据流)
- 无直接耦合:互不调用、互不依赖(最理想)
三、结合SC图直白理解
- 看单个方框模块→ 评内聚,内部功能纯不纯
- 看模块之间调用连线+传递内容→ 评耦合
- 只传普通业务数据 → 数据耦合(好)
- 传真假、启停、判断标识 → 控制耦合(差)
- 共用同一个数据表全局字段 → 公共耦合
内聚(看单个方框模块)
偶逻试过通顺功
| 内聚等级 | 一句话判断 | 好坏 |
|---|---|---|
| 偶然内聚 | 模块里代码完全不相关,硬凑一起 | 最差 |
| 逻辑内聚 | 多个功能逻辑相似,靠参数选一个执行 | 差 |
| 时间内聚 | 只是同一时间段执行的代码凑一起 | 差 |
| 过程内聚 | 按执行顺序放一起,各步骤无强依赖 | 一般 |
| 通信内聚 | 所有操作都针对同一批数据 | 一般偏上 |
| 顺序内聚 | 前一步输出=后一步输入,串行执行 | 好 |
| 功能内聚 | 模块只做一件完整、单一的事 | 最好 |
耦合(看模块之间的连线+传参)
无数标空外公内
| 耦合等级 | 一句话判断 | 好坏 |
|---|---|---|
| 内容耦合 | 一个模块直接改另一个模块的内部代码/数据 | 最差 |
| 公共耦合 | 多个模块共用同一个全局变量/数据表 | 差 |
| 外部耦合 | 多个模块依赖同一个外部文件/协议格式 | 差 |
| 控制耦合 | 传真假、启停、判断标识控制对方逻辑 | 差 |
| 标记耦合 | 传整个对象/结构体,但对方只用其中部分 | 一般 |
| 数据耦合 | 只传普通业务数据(如ID、金额) | 最好 |
| 无直接耦合 | 模块之间完全不调用、不传递任何信息 | 理想 |
速记口诀
- 内聚:越单一越好,功能内聚最牛。
- 耦合:越独立越好,数据耦合最优。
四、设计黄金原则
高内聚,低耦合
- 模块内部高度统一专一
- 模块之间尽量少牵连、少依赖
五、考场极简口诀
内聚看内部纯不纯,越高越稳;
耦合看之间粘不粘,越低越简;
SC模块设计,就靠这俩打分。