星标公众号,让嵌入式知识 “投喂” 不停歇!

模块化质量直接决定嵌入式系统的可维护性和可扩展性。模块内聚度与系统稳定性成正比,耦合度与维护成本成正比

1. 模块内聚

1.1 内聚度等级划分

最差情况:巧合内聚(Coincidental Cohesion)

模块像”垃圾抽屉”,各功能毫无关联,修改任一功能都可能影响其他。

最佳实践:功能内聚(Functional Cohesion)

内聚度提升技巧

  1. 单一职责原则:每个模块只做一件事,并做到极致
  2. 功能相关性检查:问自己”这些函数为什么在一起?”,答案应该明确唯一
  3. 规模控制:单个模块代码量建议在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:使用回调机制解耦

相关文章:

嵌入式系统模块间几种通信方式对比

C语言、嵌入式重点知识:回调函数

嵌入式软件解耦的底层逻辑与实践案例

3. 总结

模块质量的量化评估参考标准

3.1 耦合度指标(越低越好)

  • 文件包含数:头文件包含不超过5个外部模块
  • 函数参数数:接口函数参数不超过5个
  • 全局变量使用:零全局变量依赖为最佳

3.2 内聚度指标(越高越好)

  • 功能相关性:模块内所有函数应服务于同一核心功能
  • 接口一致性:函数命名和参数风格高度统一
  • 变更影响范围:修改单个功能只影响本模块内部

如果文章对你有帮助,麻烦帮忙点赞、关注,谢谢大家!