首页 > 其他分享 >什么是高内聚、低耦合

什么是高内聚、低耦合

时间:2023-05-28 23:56:26浏览次数:43  
标签:功能 什么 元素 模块 内聚 耦合 内聚性

什么是高内聚、低耦合?

起因:模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准――耦合性和内聚性。

耦合性也称块间联系。

指软件系统结构中各模块间相互联系紧密程度的一种度量。
模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。

耦合性分类(低――高): 无直接耦合;数据耦合;标记耦合;控制耦合;公共耦合;内容耦合;

  1. 无直接耦合:
  2. 数据耦合: 指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递;
  3. 标记耦合: 指两个模块之间传递的是数据结构,如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址;
  4. 控制耦合: 指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某一功能;
  5. 公共耦合: 指通过一个公共数据环境相互作用的那些模块间的耦合。公共耦合的复杂程序随耦合模块的个数增加而增加。
  6. 内容耦合: 这是最高程度的耦合,也是最差的耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。

内聚性又称块内联系。

指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。

内聚性分类(低――高): 偶然内聚;逻辑内聚;时间内聚;通信内聚;顺序内聚;功能内聚;

  1. 偶然内聚: 指一个模块内的各处理元素之间没有任何联系。
  2. 逻辑内聚: 指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
  3. 时间内聚: 把需要同时执行的动作组合在一起形成的模块为时间内聚模块。
  4. 通信内聚: 指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据。
  5. 顺序内聚: 指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素输出就是下一功能元素的输入。
  6. 功能内聚: 这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。与其他模块的耦合是最弱的。

耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。

有个例子很容易明白:一个程序有50个函数,这个程序执行得非常好;然而一旦你修改其中一个函数,其他49个函数都需要做修改,这就是高耦合的后果。

一旦你理解了它,你编写概要设计的时候设计类或者模块自然会考虑到“高内聚,低耦合”。

标签:功能,什么,元素,模块,内聚,耦合,内聚性
From: https://www.cnblogs.com/niehao/p/17439200.html

相关文章

  • 2023-05-28:为什么Redis单线程模型效率也能那么高?
    2023-05-28:为什么Redis单线程模型效率也能那么高?答案2023-05-28:1.C语言实现,效率高C语言程序运行速度快,因为其相较于其他高级语言更加接近底层机器。由于C语言直接操作内存,不会像其他语言那样依赖虚拟机或垃圾回收机制等中间层,从而能够实现更高的执行效率。2.单线程的优势Redi......
  • 2023-05-28:为什么Redis-单线程模型效率也能那么高?
    2023-05-28:为什么Redis-单线程模型效率也能那么高?答案2023-05-28:1.C语言实现,效率高C语言程序运行速度快,因为其相较于其他高级语言更加接近底层机器。由于C语言直接操作内存,不会像其他语言那样依赖虚拟机或垃圾回收机制等中间层,从而能够实现更高的执行效率。2.单线程的优势Redis采用......
  • 什么是一致性哈希?一致性哈希是如何工作的?如何设计一致性哈希?
    如果你有n个缓存服务器,一个常见的负载均衡方式是使用以下的哈希方法:服务器索引=哈希(键)%N,其中N是服务器池的大小。让我们通过一个例子来说明这是如何工作的。如表5-1所示,我们有4台服务器和8个字符串键及其哈希值。为了获取存储某个键的服务器,我们执行模运算f(键)%4......
  • 会声会影,premiere,Edius区别是什么?2023年视频编辑软件,哪个比较好呢?
    本文参考:http://t.csdn.cn/9hPYz自媒体如今已逐渐趋向于视频时代,新人UP主怀揣着“能恰到饭”的热情,“杀入”各大视频平台,只想求个“素质三连”,但这群无情的白嫖党们,总是“下次一定”以对之。是我不够帅吗?是我的内容不够优秀吗?还是我不够幽默呢?不。都不是。你与剪辑大神的距离,仅差一......
  • 机器视觉工程师,一个公司突然取消加班费意味着什么?
     家人们,跑路吧。建议结合实际自身情况,是否​跑路。某天。你的邮件里面突然收到公司的邮件,内容如下:由于经济不景气,本公司决定取消10点以后得加班费,同时取消夜宵补贴等等。如果没有加班费,恭喜你,义务劳动,但是注意“风吹草动”。看到以上内容,请大家注意,我们具体分析下:公司,订......
  • busybox是什么
    BusyBox是一个单一可执行文件的软件集合,旨在提供一个轻量级的Unix工具箱,包含了许多常用的命令和实用程序。它被设计为在嵌入式系统和资源受限的环境中运行,以提供基本的命令行功能。BusyBox的设计目标是通过将多个工具整合到一个可执行文件中,减少系统的空间占用和资源消耗。它......
  • CoreOS是什么
    CoreOS是一个基于Linux的操作系统,旨在为容器化应用程序提供轻量、安全和可靠的基础设施。它采用了一些现代化的技术和工具,以简化容器的部署、管理和编排。以下是CoreOS的一些关键特点:1.**容器优先:**CoreOS是为容器化应用程序设计的操作系统。它集成了Docker和其他容器......
  • HTTP状态码是什么?常用的状态码有什么?
    HTTP(HypertextTransferProtocol)是一种用于传输超文本和其他内容的应用层协议。历史:HTTP最早的版本是HTTP/0.9,它只支持简单的GET请求,而不支持其他操作。HTTP/1.0版本增加了许多新特性,如支持多个请求,请求和响应头信息,以及管道化传输。HTTP/1.1版本是当前最常用的版本,它引入了持......
  • HTTP状态码是什么?常用的状态码有什么?
    HTTP(HypertextTransferProtocol)是一种用于传输超文本和其他内容的应用层协议。历史:HTTP最早的版本是HTTP/0.9,它只支持简单的GET请求,而不支持其他操作。HTTP/1.0版本增加了许多新特性,如支持多个请求,请求和响应头信息,以及管道化传输。HTTP/1.1版本是当前最常用的版本,它引入了持......
  • HTTP状态码是什么?常用的状态码有什么?
    HTTP(HypertextTransferProtocol)是一种用于传输超文本和其他内容的应用层协议。历史:HTTP最早的版本是HTTP/0.9,它只支持简单的GET请求,而不支持其他操作。HTTP/1.0版本增加了许多新特性,如支持多个请求,请求和响应头信息,以及管道化传输。HTTP/1.1版本是当前最常用的版本,它引入了持......