首页 > 其他分享 >高内聚低耦合思想

高内聚低耦合思想

时间:2023-08-08 11:38:30浏览次数:30  
标签:功能 思想 元素 模块 内聚 耦合 内聚性


什么是高内聚低耦合



高内聚低耦合是为了实现比较高的模块独立性



模块独立性



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



耦合性



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


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


无直接耦合:


数据耦合: 指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递;


标记耦合: 指两个模块之间传递的是数据结构,如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址;


控制耦合: 指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某一功能;


公共耦合: 指通过一个公共数据环境相互作用的那些模块间的耦合。公共耦合的复杂程序随耦合模块的个数增加而增加。


内容耦合: 这是最高程度的耦合,也是最差的耦合。当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。



内聚性



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


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


偶然内聚: 指一个模块内的各处理元素之间没有任何联系。


逻辑内聚: 指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。


时间内聚: 把需要同时执行的动作组合在一起形成的模块为时间内聚模块。


通信内聚: 指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据。


顺序内聚: 指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素输出就是下一功能元素的输入。


功能内聚: 这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。与其他模块的耦合是最弱的。

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

有个例子很容易明白:一个程序有50个函数,这个程序执行得非常好;然而一旦你修改其中一个函数,其他49个函数都需要做修改,这就是高耦合的后果。
一旦你理解了它,你编写概要设计的时候设计类或者模块自然会考虑到“高内聚,低耦合”。

总结



总的来说:功能模块尽量新增和独立,每个功能模块只负责一件事情,这样系统结构清晰些,以后对系统功能进行删除和修改都比较方便。减少对某一个模块的代码不断的叠加。


比如说:以后我们要把某个功能下线,如果它是独立的模块,在代码层次应该是单独的页面和java文件,到时候直接删除,去掉入口就可以了。如果混杂在其他代码里到时候就需要去挑出来 。 后者要花费的时间肯定比较多,而且 容易对其他功能造成影响。


标签:功能,思想,元素,模块,内聚,耦合,内聚性
From: https://blog.51cto.com/u_16218512/7006152

相关文章

  • 《Java编程思想第四版》学习笔记06
    为什么要把一个方法声明成final呢?正如上一章指出的那样,它能防止其他人覆盖那个方法。但也许更重要的一点是,它可有效地“关闭”动态绑定,或者告诉编译器不需要进行动态绑定。这样一来,编译器就可为final方法调用生成效率更高的代码。               ......
  • [系统设计] 计算机系统设计思想:缓存/局部性原理(转载)【待完善】
    1缓存概述缓存思想是计算机系统设计中极为重要的解决手段,其本质原则是————局部性原理在资源有限的情况下,将热点资源、最重要的资源部署到离请求方最近的地方去,以达到性能预期。1.1什么是缓存,为什么要用缓存?缓存就是数据交换的缓冲区(称作Cache),是存贮数据(使用频繁的数据......
  • 一种基于概念模型思想的ABCDE系统设计建模法的研究与应用
     《一种基于概念模型思想的ABCDE系统设计建模法的研究与应用》张云龙(JINGWHALE数字科学艺术创新中心,浙江杭州,310008)国作登字-2023-A-00087399 摘要:本文基于概念模型思想提出了一种归纳设计纲领、梳理业务模型、抽象概念模型、具象设计模型、评估改进模型的ABCDE概念模......
  • 《Java编程思想第四版》学习笔记05
    6.9.1继承初始化我们有必要对整个初始化过程有所认识,其中包括继承,对这个过程中发生的事情有一个整体性的概念。请观察下述代码://:Beetle.java//Thefullprocessofinitialization.classInsect{inti=9;intj;Insect(){prt("i="+i+",j="+j);j=39;......
  • 《Java编程思想第四版》学习笔记04
    在面向对象的程序设计中,创建和使用代码最可能采取的一种做法是:将数据和方法统一封装到一个类里,并且使用那个类的对象。有些时候,需通过“合成”技术用现成的类来构造新类。而继承是最少见的一种做法。因此,尽管继承在学习OOP的过程中得到了大量的强调,但并不意味着应该尽可能地到处......
  • 排他思想
      ......
  • 你是否理解空间换时间的思想?
    "空间换时间"是计算机科学和算法设计中的一个基本原则。它指的是在某些算法中,你可以通过使用更多的内存空间来减少执行算法所需的时间,或者反过来,通过减少内存空间的使用来增加执行时间。换句话说,你可以在时间效率和空间效率之间进行权衡。通过增加内存空间,你可以存储预先计算的结......
  • 读《大道至简——软件工程实践者的思想》有感
        近来读了周爱民先生的《大道至简》一书,这本书主要是从一个软件工程实践者的角度来写的一些工作及工程上的经验,以下是我读后的一些感悟以及自己对于软件工程新的理解。“大道至简”一词出自老子的《道德经》,这句话的意思是:宇宙间万物一开始的时候,所有的一切都是最原始......
  • 读《大道至简 ——软件工程实践者的思想》有感
        自学习软件工程以来,我在编程中一直有着不小的困惑。我时常感觉编程时没有逻辑感,时常找不到编程的思路。但在阅读了由王建民老师推荐的《大道至简——软件工程实践者的思想》后,我才真正明白到原来我正是缺少了“大道至简”。   《大道至简——软件工程实践者的......
  • 《大道至简(软件工程实践者的思想)》读后感
       《大道至简(软件工程实践者的思想)》读后感《大道至简(软件工程实践者的思想)》是周爱民先生在软件工程领域的经验和思考的结晶,这本书给我留下了深刻的印象。在这篇读后感中,我将分享我对这本书的理解和感受。    首先,我被书中强调的简单的力量所震撼。作者通过自己......