星标公众号,让嵌入式知识 “投喂” 不停歇!
模块化质量直接决定嵌入式系统的可维护性和可扩展性。模块内聚度与系统稳定性成正比,耦合度与维护成本成正比。
1. 模块内聚
1.1 内聚度等级划分
最差情况:巧合内聚(Coincidental Cohesion)
模块像”垃圾抽屉”,各功能毫无关联,修改任一功能都可能影响其他。
最佳实践:功能内聚(Functional Cohesion)
内聚度提升技巧:
-
单一职责原则:每个模块只做一件事,并做到极致 -
功能相关性检查:问自己”这些函数为什么在一起?”,答案应该明确唯一 -
规模控制:单个模块代码量建议在200-500行之间,超过就要考虑拆分
2. 模块耦合
2.1 常见的耦合方式及实战应对
2.1.1 数据耦合(理想状态)
接口清晰,依赖明确,易于测试和维护。
2.1.2 标记耦合(谨慎使用)
当battery_data_t结构变化时,即使calculate_battery_level不需要新字段,也必须重新编译。
2.1.3 控制耦合(尽量避免)
改进方案:拆分为独立函数

2.1.4 外部耦合(严格管控)
全局变量成为隐式接口,修改风险极高。
2.2 降低耦合的实战策略
策略1:依赖倒置原则(DIP)
传统方式:高层模块依赖底层模块
DIP方式:双方都依赖抽象接口
策略2:接口最小化原则
坏例子:接口暴露过多内部细节
好例子:最小化接口,隐藏实现细节
策略3:使用回调机制解耦
相关文章:
3. 总结
模块质量的量化评估参考标准:
3.1 耦合度指标(越低越好)
-
文件包含数:头文件包含不超过5个外部模块 -
函数参数数:接口函数参数不超过5个 -
全局变量使用:零全局变量依赖为最佳
3.2 内聚度指标(越高越好)
-
功能相关性:模块内所有函数应服务于同一核心功能 -
接口一致性:函数命名和参数风格高度统一 -
变更影响范围:修改单个功能只影响本模块内部
如果文章对你有帮助,麻烦帮忙点赞、关注,谢谢大家!