当前位置:网站首页>什么是高内聚、低耦合?
什么是高内聚、低耦合?
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
边栏推荐
- Interprocess communication (IPC)
- Arduino receives and sends strings
- The eighth training assignment
- 单调性约束与反单调性约束的区别 monotonicity and anti-monotonicity constraint
- 书签整理-程序员常用网站导航
- MPX plug-in
- CentOS系统下Redis安装和自启动配置的步骤
- Multithreaded application (thread pool, singleton mode)
- [pro test feasible] error while loading shared libraries solution
- [untitled]
猜你喜欢
"Dream Cup" 2017 Jiangsu information and future primary school summer camp it expert PK program design questions
Operation method of Orange Pie orangepi 4 lts development board connecting SATA hard disk through mini PCIe
[installation system] U disk installation system tutorial, using UltraISO to make U disk startup disk
[untitled]
[machine learning 03] Lagrange multiplier method
[STM32] actual combat 3.1 - drive 42 stepper motors with STM32 and tb6600 drivers (I)
2021 summary and 2022 outlook
Mysql的json格式查询
Arduino board description
uniCloud
随机推荐
Online hard core tools
Arduino board description
Unity script visualization about layout code
The opacity value becomes 1%
Cmake learning manual
Still cannot find RPC dispatcher table failed to connect in virtual KD
高考作文,高频提及科技那些事儿……
Unity determines whether the mouse clicks on the UI
Realize ray detection, drag the mouse to move the object and use the pulley to scale the object
Compile QT project script with qmake
Unity websocket server
The sixth training assignment
uniapp 在onLaunch中跳轉頁面後,點擊事件失效解决方法
Mysql的json格式查询
【pyqt】tableWidget里的cellWidget使用信号与槽机制
JS add spaces to the string
Use of dotween
When initializing 'float', what is the difference between converting to 'float' and adding 'f' as a suffix?
uniapp 在onLaunch中跳转页面后,点击事件失效解决方法
BUUCTF---Reverse---reverse1