怎么说呢,一个人要开发大型软件是很没效率的,所以就要有很多人共同开发,懂吧

那么很多人共同开发,你不能所有人都开发一个模块,一个功能,一个文件对吧,是不是要有个分工呢?比如说做一个程序,有人开发数据库方面的东西,有人开发网络方面的东西,有人开发界面方面的东西,这就是分工。

那么分工,每一个分工,也就相当于一个模块,而一个模块就是一个功能。一个模块这个概念比较抽象,可以说是一个编程语言文件,也可以说是一个人所作的工作,也可能说是一个具体功能。

无论如何,模块之间都要有一定的联系,比如说我的网络链接模块需要用你数据库模块的数据,这个懂吧。那么这些模块之间的连接性,就是耦合性⋯⋯

有个例子很容易明白:一个程序有50个函数,这个程序执行得非常好;然而一旦你修改其中一个函数,其他49个函数都需要做修改,这就是高耦合的后果。
一旦你理解了它,你编写概要设计的时候设计类或者模块自然会考虑到“高内聚,低耦合”。

高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。低耦合是指让每个模块尽可能的独立完成某个特定的子功能。

以下的都是一些扯淡话,不食人间烟火的那种:(可以不看,我只是做个记录)

软件工程中耦合
   简单地说,软件工程中对象之间的耦合度就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。
  有软硬件之间的耦合,还有软件各模块之间的耦合。
  耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。
  耦合可以分为以下几种,它们之间的耦合度由高到低排列如下:
  (1) 内容耦合。当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过不正常入口而转入另一个模块时,这样的耦合被称为内容耦合。内容耦合是最高程度的耦合,应该避免使用之。
  (2) 公共耦合。两个或两个以上的模块共同引用一个全局数据项,这种耦合被称为公共耦合。在具有大量公共耦合的结构中,确定究竟是哪个模块给全局变量赋了一个特定的值是十分困难的。
  (3) 外部耦合 。一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
  (4) 控制耦合 。一个模块通过接口向另一个模块传递一个控制信号,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合。
  (5) 标记耦合 。若一个模块A通过接口向两个模块B和C传递一个公共参数,那么称模块B和C之间存在一个标记耦合。
  (6) 数据耦合。模块之间通过参数来传递数据,那么被称为数据耦合。数据耦合和最低的一种耦合形式,系统中一般都存在这种类型的耦合,因为为了完成一些有意义的功能,往往需要将某些模块的输出数据作为另一些模块的输入数据。
  (7) 非直接耦合 。两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的
  总结:耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上我们应采用以下原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。

编程中遇见的“耦合”“耦合度”“低耦合”是什么意思相关推荐

  1. 从高耦合到低耦合到底有多远?

    一切都是拥抱变化,反过来说,如果没有变化或者需求很稳定,那么一切就是过度设计.所以,一切都要看情况,回到了马克思主义的辩证学.呵呵. 无论书还是博客, 耦合这个词已被无数人说烂,任何一位程序员都会告诉 ...

  2. 6. 以下耦合度中最松散的耦合是_什么是程序设计中的高内聚、低耦合?

    开发者经常遇到一些项目,比如一个真格量化中的策略,要求较高的模块独立性.模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单.我们有两个定性的度量标准--耦合性和内聚性. ...

  3. python模块化设计耦合度_什么是程序设计中的高内聚、低耦合?

    开发者经常遇到一些项目,比如一个真格量化中的策略,要求较高的模块独立性.模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单.我们有两个定性的度量标准--耦合性和内聚性. ...

  4. java中的高内聚和低耦合和接口的简单理解

    ## *浅谈java编程语言中高内聚和低耦合**先说低耦合中一个例子: 假设你的一个web应用包含50个函数<或者说方法> 你改动一个函数,其他函数正常运行工作...这就是低耦合.高内聚: ...

  5. 软件设计中的高内聚、低耦合

    一.内聚 1.定义 一个模块内部各元素聚集.关联的程度. 定义的范围在一个模块内部.一个高内聚模块,应该恰好只做一件事.高内聚就是模块内各元素高度聚集.高度关联. 2.特点 高内聚模块具备较好的可靠性 ...

  6. Java编程思想之高内聚低耦合

    文章目录 1 前言 2 低耦合 2.1 耦合性定义 2.2 耦合性分类 2.3 使用低耦合 3 高内聚 3.1 高内聚定义 3.2 内聚性分类 4 示例 5 高内聚,低耦合的系统有什么好处呢 6 降低 ...

  7. Java中的低耦合高内聚法则

    java框架模式_低耦合高内聚法则 定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越来越密切,耦合度越来越大,当一个类发生改变时,对另外一个类的影响也越大. 解决方案:尽量降 ...

  8. java 高内聚低耦合_高内聚低耦合法则实例解析

    定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越来越密切,耦合度越来越大,当一个类发生改变时,对另外一个类的影响也越大. 解决方案:尽量降低类与类之间的耦合. 自从我们接触到 ...

  9. 高内聚低耦合设计原则

    高内聚低耦合 高内聚低耦合是模块设计的基本原则.模块设计就像四世同堂居家过日子,妯娌婆媳吃大锅饭.柴米油盐不分你我很容易伤和气:如果亲兄弟明算账,每顿饭都AA又太显得生分,不利于和谐,因此把握好一个度 ...

最新文章

  1. xbox acc驱动win7_Xbox老大:希望第一方工作室能推出更多单机游戏_电竞
  2. 深入浅出python机器学习_如何用python画(绘制)二维函数(二维图)?
  3. Flink CDC 2.0 正式发布,详解核心改进
  4. mfc 创建线程函数AfxBeginThread,线程中访问mfc控件
  5. python怎么解释语言_python是解释型语言吗
  6. qtablewidget 选中不改变背景_C4D制作不一样的核壳结构
  7. JavaScript Unicode字符操作
  8. 电商指标详细介绍和推荐系统常用评估指标
  9. Bash脚本15分钟进阶教程-转
  10. python 规则引擎 drools_SpringBoot2整合Drools规则引擎及案例详解
  11. 模糊综合评价在matlab上的实现
  12. seo伪原创/百度链接推送/原创检测工具,python超简单POST案例
  13. Android平台Cocos2dx打包流程
  14. matlab 高精度无理数,如何从MatLab上的无理数产生近似分数?
  15. Javascript 设计模式之外观模式【讲师辅导】-曾亮-专题视频课程
  16. arm-linux-gnueabihf-gcc 安装 OpenBLAS
  17. 宝塔开启nginx防火墙导致nginx无法启动
  18. 【原创】彼得德鲁克《管理的实践》札记(五)
  19. Linux关闭嘟嘟嘟的报警声
  20. php 自动生成sql,用PHP批量生成SQL更新语句 网页版

热门文章

  1. Bcompare.exe应用程序发生错误
  2. python自动化爬取淘宝商品数据导出execl表格
  3. html鼠标在图片上显示文字说明,鼠标路过图片,出现说明文字,是怎么做的?...
  4. html js满屏飘雪特效,JS实现炫酷雪花飘落效果
  5. 你能学会的UGNX数控编程平面轮廓铣教程
  6. 第3关:函数的使用范围:Python 作用域
  7. 数据结构--环形队列的介绍与实现
  8. Linux深入探索01-stty与键盘信号
  9. Node-RED学习(一)
  10. mysql 死锁分析