type
status
date
slug
summary
tags
category
icon
password
一、高内聚(模块内部专注做一件事)
1. 功能内聚
例子:一个「加法计算器」函数,只负责两数相加,不处理减法或乘法。
2. 顺序内聚
例子:一个「咖啡机」模块,流程严格按顺序执行:
- 磨咖啡豆 → 2. 烧开水 → 3. 冲泡咖啡。 每一步的输出是下一步的输入(比如磨好的豆子传给冲泡步骤)。
3. 通信内聚
例子:一个「用户信息处理」模块,所有函数都操作同一份用户数据:
- update_user_name():修改用户名
- calculate_user_age():计算年龄
- format_user_address():格式化地址 所有函数都围绕同一个用户对象操作。
4. 过程内聚
例子:一个「早餐制作」模块,按流程执行:
- 烤面包 → 2. 煎鸡蛋 → 3. 倒果汁。 这些步骤在逻辑上是连贯的(都是早餐流程),但彼此不共享数据。
5. 时间内聚
例子:一个「系统启动」模块,开机时一次性执行:
- 检查硬件 → 2. 加载配置文件 → 3. 初始化日志。 这些任务只在系统启动时执行,但功能彼此无关。
二、低耦合(模块之间尽量减少依赖)
1. 数据耦合(最好)
例子:一个「计算器」函数,通过参数接收数据,返回结果:
2. 标记耦合
例子:一个「用户信息显示」函数,接收一个完整的用户对象:
如果用户对象结构变化(比如字段改名),这个函数可能受影响。
3. 控制耦合
例子:一个「任务执行」函数,通过参数控制行为:
如果新增任务类型,需要修改 
run_task 函数。4. 外部耦合(需谨慎)
例子:一个「日志模块」依赖全局配置文件:
如果全局配置的格式改变,日志模块会出错。
5. 公共耦合(需避免)
例子:多个模块共享同一个全局变量:
如果模块A修改了 
global_cache 的结构,模块B会崩溃。6. 内容耦合(最差)
例子:模块A直接修改模块B的内部变量:
一旦模块B的内部实现改变(比如变量改名),模块A会直接崩溃。
总结对比
| 类型 | 高内聚例子 | 低耦合例子 | 
| 好的设计 | 加法计算器(功能纯粹) | 计算器函数(通过参数传递) | 
| 坏的设计 | 早餐制作(步骤松散关联) | 直接修改其他模块内部数据 | 
核心原则:
- 高内聚:模块像「瑞士军刀」的每个工具,各司其职。
- 低耦合:模块像「乐高积木」,通过标准接口连接,不关心内部细节。