当前位置:网站首页>什么是高内聚、低耦合?
什么是高内聚、低耦合?
2022-07-07 09:07:00 【全栈程序员站长】
起因:模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准――耦合性和内聚性。 耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
耦合性分类(低――高): 无直接耦合;数据耦合;标记耦合;控制耦合;公共耦合;内容耦合;
1 无直接耦合:
2 数据耦合: 指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递;
3 标记耦合: 指两个模块之间传递的是数据结构,如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址;
4 控制耦合: 指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某一功能;
5 公共耦合: 指通过一个公共数据环境相互作用的那些模块间的耦合。公共耦合的复杂程序随耦合模块的个数增加而增加。
6 内容耦合: 这是最高程度的耦合,也是最差的耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。
内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。 内聚性匪类(低――高): 偶然内聚;逻辑内聚;时间内聚;通信内聚;顺序内聚;功能内聚;
1 偶然内聚: 指一个模块内的各处理元素之间没有任何联系。
2 逻辑内聚: 指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
3 时间内聚: 把需要同时执行的动作组合在一起形成的模块为时间内聚模块。
4 通信内聚: 指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据。
5 顺序内聚: 指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素输出就是下一功能元素的输入。
6 功能内聚: 这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。与其他模块的耦合是最弱的。
耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。
有个例子很容易明白:一个程序有50个函数,这个程序执行得非常好;然而一旦你修改其中一个函数,其他49个函数都需要做修改,这就是高耦合的后果。 一旦你理解了它,你编写概要设计的时候设计类或者模块自然会考虑到“高内聚,低耦合”。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/113823.html原文链接:https://javaforall.cn
边栏推荐
- uniapp 在onLaunch中跳轉頁面後,點擊事件失效解决方法
- Go redis Middleware
- Typescript interface inheritance
- "Dream Cup" 2017 Jiangsu information and future primary school summer camp it expert PK program design questions
- 單調性約束與反單調性約束的區別 monotonicity and anti-monotonicity constraint
- [installation system] U disk installation system tutorial, using UltraISO to make U disk startup disk
- seata 1.3.0 四种模式解决分布式事务(AT、TCC、SAGA、XA)
- QT document
- 2021-04-23
- Interprocess communication (IPC)
猜你喜欢

seata 1.3.0 四种模式解决分布式事务(AT、TCC、SAGA、XA)

Interprocess communication (IPC)

Operation method of Orange Pie orangepi 4 lts development board connecting SATA hard disk through mini PCIe

Transaction rolled back because it has been marked as rollback only
![[C #] the solution of WinForm operation zoom (blur)](/img/66/b70213c95acd4ad9fe2eb739bd46b5.png)
[C #] the solution of WinForm operation zoom (blur)

Socket socket programming
![[installation system] U disk installation system tutorial, using UltraISO to make U disk startup disk](/img/41/3a9450a84291ba04caee65241bce5d.png)
[installation system] U disk installation system tutorial, using UltraISO to make U disk startup disk

Static semantic check of clang tidy in cicd

The opacity value becomes 1%

2021 summary and 2022 outlook
随机推荐
"Dream Cup" 2017 Jiangsu information and future primary school summer camp it expert PK program design questions
Realize ray detection, drag the mouse to move the object and use the pulley to scale the object
Use of dotween
2022.7.5DAY597
[untitled]
Unity websocket server
The opacity value becomes 1%
Unity script visualization about layout code
Network foundation (1)
Seata 1.3.0 four modes to solve distributed transactions (at, TCC, Saga, XA)
90后,辞职创业,说要卷死云数据库
书签整理-程序员常用网站导航
【亲测可行】error while loading shared libraries的解决方案
A case of compiling QT file qmake compiling script
2021 summary and 2022 outlook
【STM32】实战3.1—用STM32与TB6600驱动器驱动42步进电机(一)
Opencv installation and environment configuration - vs2017
Unity script generates configurable files and loads
Go redis Middleware
單調性約束與反單調性約束的區別 monotonicity and anti-monotonicity constraint