尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【软件工程】结构化设计:高内聚低耦合原则

【软件工程】结构化设计:高内聚低耦合原则
📅 发布时间:2026/7/17 8:45:10

考点频率:★★★★★(上午选择题必考,下午案例题也常涉及)
难度:⭐⭐
建议:理解内聚耦合的评价原则和判断准则,重点掌握评价模块设计质量的方法

1️⃣ 什么是“高内聚、低耦合”?

高内聚、低耦合是软件工程中模块化设计的核心原则,也是判断模块设计好坏的黄金标准。

用一个比喻来理解:

  • 高内聚:一个模块就像一个专业的团队——团队成员各司其职但目标一致,每个人都围绕同一个核心任务工作。比如一个“财务计算”模块,团队里所有人都在做财务相关的事情,没人分心去做UI设计或网络通信。
  • 低耦合:模块之间的关系就像合作公司——彼此之间有业务往来(调用接口),但各自内部怎么运作互不干涉。比如“订单模块”和“支付模块”通过API交互,支付模块改了内部算法,订单模块不需要跟着改。

一句话理解:低耦合是“管好自己的事,少管别人的闲事”;高内聚是“把自己那一亩三分地精耕细作好”。

2️⃣ 高内聚与低耦合的评价原则

判断一个设计是否符合高内聚、低耦合,可以从以下几个维度来评估:

评估维度优秀设计表现(高内聚低耦合)糟糕设计表现(低内聚高耦合)
单一职责每个模块只负责一个明确的功能一个模块既做数据计算,又写日志,还发邮件
接口简洁性模块间接口简单清晰,参数数量少(建议≤4个)接口复杂,传递大量参数或复杂数据结构
变更影响面修改一个模块只需在该模块内部进行改一处代码,牵连好几个模块都要跟着改
复用性模块可以在不同项目中直接使用模块依赖太多外部条件,离开当前项目就用不了
可测试性每个模块可以独立进行单元测试测试一个模块必须先准备好一堆其他模块
变更隔离性模块内部的修改不会扩散到外部调用方修改模块内部实现,导致所有调用方都要改代码
可理解性看一眼模块名就知道它大概做什么看完模块全部代码也不知道它到底想干嘛
变化频率不同模块的变化频率相互独立需求一变,所有模块都得跟着大改

判断逻辑(实践经验):如果新增一个功能时,你需要修改3个以上的模块才能完成 → 说明模块划分可能不合理,耦合度过高或内聚度不足。

3️⃣ 低内聚、高耦合的典型表现(反面案例)

在实际项目中,模块设计不良常表现为以下几种“症状”,这有助于你在选择题或案例题中快速判断模块质量问题:

3.1 低内聚的典型表现

  • 代码臃肿:一个模块几千行代码,什么都往里塞,不知道它到底负责什么
  • 职责发散:模块中的函数看起来“各有各的想法”,找不到一个共同的核心目标
  • 频繁修改:只要有需求变更,这个模块总是要改,说明它承担了不该承担的责任

3.2 高耦合的典型表现

  • 改一牵十:修改一个模块的接口,导致大量其他模块需要跟着改
  • 全局变量满天飞:多个模块频繁读写同一个全局变量,数据流向混乱
  • 循环依赖:模块A调用B,B又调用A,形成一个环
  • 直接访问内部数据:模块A直接读写模块B的私有属性或缓存

4️⃣ 如何在设计中践行高内聚低耦合?

4.1 提高内聚的方法

方法说明
单一职责每个模块只做一件事情(功能内聚的目标)
面向接口编程模块之间通过接口协作,而非具体实现。即使模块内部分解为多个类,也通过接口暴露功能
合理拆分当一个模块代码量超过200行或职责超过2个时,考虑进一步拆分
命名即文档模块名要准确反映其职责(如TaxCalculator比Utils好)

4.2 降低耦合的方法

方法说明
减少参数数量能传1个参数就别传3个;能用简单值就别传整个对象(避免标记耦合升为内容耦合)
避免控制耦合不要让调用方传控制变量来决定被调用方的行为——把“选哪条路”的决定权放在被调用方内部
避免全局变量通过参数传递而非全局变量共享数据
遵循依赖倒置原则高层模块不应依赖低层模块的实现细节

5️⃣ 典型例题

例题1:下列关于“高内聚、低耦合”原则的叙述中,正确的是( )。

A. 模块之间传递的数据越复杂,耦合度越低
B. 模块内部各元素之间联系越弱,内聚度越高
C. 高内聚、低耦合是模块化设计的理想目标
D. 高内聚必然导致模块之间的高耦合

解析:A错误——传递的数据越复杂,耦合度越高(数据耦合→标记耦合);B说反了——内部联系越弱,内聚度越低;D错误——高内聚和低耦合是独立属性,一个模块内部做得好不代表它和外部的关系差。C正确。选C。


例题2(真题改编):某系统在设计时,模块A直接通过访问模块B的全局变量来获取数据,这种设计违反了( )原则。

A. 高内聚
B. 低耦合
C. 高内聚和低耦合
D. 以上都不违反

解析:通过全局变量共享数据 →公共耦合,耦合度高,违反了“低耦合”原则。选B。

6️⃣ 记忆口诀

高内聚,模块内部一条心;低耦合,模块之间少操心。
接口要简单,依赖要清晰,改了不扩散,测了不牵连。

7️⃣ 小测验(评论区对答案)

以下哪种做法最有助于实现“低耦合”的设计目标?
A. 模块之间通过全局变量进行数据共享
B. 模块A调用模块B时,传递一个控制标志让B决定执行逻辑
C. 模块A和模块B通过定义清晰的接口进行交互,不共享内部实现
D. 模块A直接访问模块B的内部数据结构以提高效率

🔔本专栏日更,点击头像 → 专栏《软考中级高频考点》订阅,第一时间接收新内容

#软考中级 #软件设计师 #高内聚 #低耦合 #模块设计 #软件工程

相关新闻

  • RISC-V并行架构MC3172开发板实战指南
  • 智能交通执法系统:3秒识别违章的技术解析
  • CANN/asc-devkit Lgamma缓冲区因子接口

最新新闻

  • DeepSeek-OCR Client高级技巧:10个提升OCR识别准确率的方法
  • 石家庄本地记账公司:选对伙伴,企业财务轻松又省心 - 热点速览
  • 具身智能组织内耗的根源与破局:从物理约束出发
  • Flow-Guided Feature Aggregation论文解读:ICCV 2017经典论文深度剖析
  • 植被渲染与视差遮挡映射:EveryRay引擎的自然环境渲染技术
  • GPT-Live全双工语音交互架构解析:从实时ASR到AI Agent决策

日新闻

  • 佛山青少年训练营推荐:军博营地实力顶尖 - 秋山寄远
  • 如何快速上手PvZ2 Gardendless:免费Web版植物大战僵尸2完整指南
  • jiuwen-deepsearch核心功能详解:规划-检索-反思三合一智能工作流

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号