当前位置:网站首页>什么是高内聚、低耦合?
什么是高内聚、低耦合?
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
边栏推荐
- 2021 summary and 2022 outlook
- 2021 summary and 2022 outlook
- Une fois que l'uniapp a sauté de la page dans onlaunch, cliquez sur Event Failure resolution
- Transaction rolled back because it has been marked as rollback only
- Use load_ decathlon_ Datalist (Monai) fast loading JSON data
- Go Slice 比较
- [untitled]
- Force buckle 1002 Find common characters
- Unity websocket server
- Avoid mutating a prop directly since the value will be overwritten whenever the parent component
猜你喜欢
【C#】WinForm运行缩放(变糊)的解决方法
VR development optimization
Array object sorting
JSON format query of MySQL
Ping tool ICMP message learning
Use load_ decathlon_ Datalist (Monai) fast loading JSON data
China Southern Airlines pa3.1
[OneNote] can't connect to the network and can't sync the problem
从色情直播到直播电商
Operation method of Orange Pie orangepi 4 lts development board connecting SATA hard disk through mini PCIe
随机推荐
A case of compiling QT file qmake compiling script
The concept, implementation and analysis of binary search tree (BST)
[pytorch 07] hands on deep learning chapter_ Preliminaries/ndarray exercises hands-on version
SQL Server knowledge gathering 9: modifying data
Records on the use of easyflash v3.3
Go slice comparison
Operation method of Orange Pie orangepi 4 lts development board connecting SATA hard disk through mini PCIe
"Dream Cup" 2017 Jiangsu information and future primary school summer camp it expert PK program design questions
Which securities company is the best and safest to open an account for the subscription of new shares
Using tansformer to segment three-dimensional abdominal multiple organs -- actual battle of unetr
“梦想杯”2017 年江苏省信息与未来小学生夏令营 IT 小能手 PK 之程序设计试题
Qtcreator sets multiple qmake
Avoid mutating a prop directly since the value will be overwritten whenever the parent component
[untitled]
CSAPP bomb lab parsing
Simple and easy to modify spring frame components
POJ1821 Fence 题解报告
Unity script generates configurable files and loads
Wallhaven wallpaper desktop version
uniCloud