编程中遇见的“耦合”“耦合度”“低耦合”是什么意思
怎么说呢,一个人要开发大型软件是很没效率的,所以就要有很多人共同开发,懂吧
那么很多人共同开发,你不能所有人都开发一个模块,一个功能,一个文件对吧,是不是要有个分工呢?比如说做一个程序,有人开发数据库方面的东西,有人开发网络方面的东西,有人开发界面方面的东西,这就是分工。
那么分工,每一个分工,也就相当于一个模块,而一个模块就是一个功能。一个模块这个概念比较抽象,可以说是一个编程语言文件,也可以说是一个人所作的工作,也可能说是一个具体功能。
无论如何,模块之间都要有一定的联系,比如说我的网络链接模块需要用你数据库模块的数据,这个懂吧。那么这些模块之间的连接性,就是耦合性⋯⋯
有个例子很容易明白:一个程序有50个函数,这个程序执行得非常好;然而一旦你修改其中一个函数,其他49个函数都需要做修改,这就是高耦合的后果。
一旦你理解了它,你编写概要设计的时候设计类或者模块自然会考虑到“高内聚,低耦合”。
高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。低耦合是指让每个模块尽可能的独立完成某个特定的子功能。
以下的都是一些扯淡话,不食人间烟火的那种:(可以不看,我只是做个记录)
软件工程中耦合
简单地说,软件工程中对象之间的耦合度就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。
有软硬件之间的耦合,还有软件各模块之间的耦合。
耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。
耦合可以分为以下几种,它们之间的耦合度由高到低排列如下:
(1) 内容耦合。当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过不正常入口而转入另一个模块时,这样的耦合被称为内容耦合。内容耦合是最高程度的耦合,应该避免使用之。
(2) 公共耦合。两个或两个以上的模块共同引用一个全局数据项,这种耦合被称为公共耦合。在具有大量公共耦合的结构中,确定究竟是哪个模块给全局变量赋了一个特定的值是十分困难的。
(3) 外部耦合 。一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
(4) 控制耦合 。一个模块通过接口向另一个模块传递一个控制信号,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合。
(5) 标记耦合 。若一个模块A通过接口向两个模块B和C传递一个公共参数,那么称模块B和C之间存在一个标记耦合。
(6) 数据耦合。模块之间通过参数来传递数据,那么被称为数据耦合。数据耦合和最低的一种耦合形式,系统中一般都存在这种类型的耦合,因为为了完成一些有意义的功能,往往需要将某些模块的输出数据作为另一些模块的输入数据。
(7) 非直接耦合 。两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的
总结:耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上我们应采用以下原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。
编程中遇见的“耦合”“耦合度”“低耦合”是什么意思相关推荐
- 从高耦合到低耦合到底有多远?
一切都是拥抱变化,反过来说,如果没有变化或者需求很稳定,那么一切就是过度设计.所以,一切都要看情况,回到了马克思主义的辩证学.呵呵. 无论书还是博客, 耦合这个词已被无数人说烂,任何一位程序员都会告诉 ...
- 6. 以下耦合度中最松散的耦合是_什么是程序设计中的高内聚、低耦合?
开发者经常遇到一些项目,比如一个真格量化中的策略,要求较高的模块独立性.模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单.我们有两个定性的度量标准--耦合性和内聚性. ...
- python模块化设计耦合度_什么是程序设计中的高内聚、低耦合?
开发者经常遇到一些项目,比如一个真格量化中的策略,要求较高的模块独立性.模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单.我们有两个定性的度量标准--耦合性和内聚性. ...
- java中的高内聚和低耦合和接口的简单理解
## *浅谈java编程语言中高内聚和低耦合**先说低耦合中一个例子: 假设你的一个web应用包含50个函数<或者说方法> 你改动一个函数,其他函数正常运行工作...这就是低耦合.高内聚: ...
- 软件设计中的高内聚、低耦合
一.内聚 1.定义 一个模块内部各元素聚集.关联的程度. 定义的范围在一个模块内部.一个高内聚模块,应该恰好只做一件事.高内聚就是模块内各元素高度聚集.高度关联. 2.特点 高内聚模块具备较好的可靠性 ...
- Java编程思想之高内聚低耦合
文章目录 1 前言 2 低耦合 2.1 耦合性定义 2.2 耦合性分类 2.3 使用低耦合 3 高内聚 3.1 高内聚定义 3.2 内聚性分类 4 示例 5 高内聚,低耦合的系统有什么好处呢 6 降低 ...
- Java中的低耦合高内聚法则
java框架模式_低耦合高内聚法则 定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越来越密切,耦合度越来越大,当一个类发生改变时,对另外一个类的影响也越大. 解决方案:尽量降 ...
- java 高内聚低耦合_高内聚低耦合法则实例解析
定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越来越密切,耦合度越来越大,当一个类发生改变时,对另外一个类的影响也越大. 解决方案:尽量降低类与类之间的耦合. 自从我们接触到 ...
- 高内聚低耦合设计原则
高内聚低耦合 高内聚低耦合是模块设计的基本原则.模块设计就像四世同堂居家过日子,妯娌婆媳吃大锅饭.柴米油盐不分你我很容易伤和气:如果亲兄弟明算账,每顿饭都AA又太显得生分,不利于和谐,因此把握好一个度 ...
最新文章
- xbox acc驱动win7_Xbox老大:希望第一方工作室能推出更多单机游戏_电竞
- 深入浅出python机器学习_如何用python画(绘制)二维函数(二维图)?
- Flink CDC 2.0 正式发布,详解核心改进
- mfc 创建线程函数AfxBeginThread,线程中访问mfc控件
- python怎么解释语言_python是解释型语言吗
- qtablewidget 选中不改变背景_C4D制作不一样的核壳结构
- JavaScript Unicode字符操作
- 电商指标详细介绍和推荐系统常用评估指标
- Bash脚本15分钟进阶教程-转
- python 规则引擎 drools_SpringBoot2整合Drools规则引擎及案例详解
- 模糊综合评价在matlab上的实现
- seo伪原创/百度链接推送/原创检测工具,python超简单POST案例
- Android平台Cocos2dx打包流程
- matlab 高精度无理数,如何从MatLab上的无理数产生近似分数?
- Javascript 设计模式之外观模式【讲师辅导】-曾亮-专题视频课程
- arm-linux-gnueabihf-gcc 安装 OpenBLAS
- 宝塔开启nginx防火墙导致nginx无法启动
- 【原创】彼得德鲁克《管理的实践》札记(五)
- Linux关闭嘟嘟嘟的报警声
- php 自动生成sql,用PHP批量生成SQL更新语句 网页版