当前位置:网站首页>什么是高内聚、低耦合?
什么是高内聚、低耦合?
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
边栏推荐
- I plan to take part in security work. How about information security engineers and how to prepare for the soft exam?
- 90后,辞职创业,说要卷死云数据库
- 创意信息获2家机构调研:GreatDB 数据库已在9地部署
- JS add spaces to the string
- 2022.7.6DAY598
- Simple and easy to modify spring frame components
- The eighth training assignment
- VIM命令模式与输入模式切换
- 从色情直播到直播电商
- Online hard core tools
猜你喜欢

【安装系统】U盘安装系统教程,使用UltraISO制作U盘启动盘

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

Debezium同步之Debezium架构详解

From pornographic live broadcast to live broadcast E-commerce

China Southern Airlines pa3.1
![[untitled]](/img/a0/29975bc0f9832e1640cc39dfce4a71.jpg)
[untitled]

Network engineer test questions and answers in May of the first half of 2022

Online hard core tools

JSON format query of MySQL

Wallhaven wallpaper desktop version
随机推荐
Realize ray detection, drag the mouse to move the object and use the pulley to scale the object
Arduino board description
Go redis Middleware
Add a self incrementing sequence number to the antd table component
Network engineer test questions and answers in May of the first half of 2022
PR Lecture Notes
[machine learning 03] Lagrange multiplier method
Deconstruction and assignment of variables
[untitled]
Use of dotween
[actual combat] transformer architecture of the major medical segmentation challenges on the list --nnformer
Static semantic check of clang tidy in cicd
What does intermediate software evaluator test
Compile QT project script with qmake
Kitex 重试机制
vim 的各种用法,很实用哦,都是本人是在工作中学习和总结的
[untitled]
基于Retrofit框架的金山API翻译功能案例
Mendeley -- a free document management tool that automatically inserts references into papers
Using tansformer to segment three-dimensional abdominal multiple organs -- actual battle of unetr