对高内聚,低耦合的理解

内聚:一个模块内各个元素彼此结合的紧密程度

耦合:一个软件结构内不同模块之间互连程度的度量

 

  (一)这是判断设计好坏的标准,主要是面向OO的设计,主要是看类的内聚性是否高,偶合度是否低。
   

    高内聚:类与类之间的关系而定。高,意思是他们之间的关系要简单,明了,不要有很强的关系,不然,运行起来就会出问题。一个类的运行影响到其他的类。

    低耦合:类内部的方法而言。把程序的功能尽量分散,别在一个类里只写一个或很好的方法,因为那样会给你的调试等带来很多问题。出了错你都不知道在什么地方。

    (二)系统的各个模块尽可能具有较大的独立性,换句话说,希望这样设计软件结构,使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单,以便能方便地把不同场合下写成的程序模块组合成软件系统。衡量模块独立性的定性标准是内聚(一个模块内各个元素彼此结合的紧密程度)和耦合(一个软件结构内不同模块之间互连程度的度量)。高内聚、低耦合的模块是设计时追求的目标。

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

耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
    
无直接耦合;数据耦合;标记耦合;控制耦合;公共耦合;
     内容耦合(低――高); 1无直接耦合;2数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递;3标记耦合指两个模块之间传递的是数据结构,如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址;
4控制耦合指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某一功能。; 5公共耦合指通过一个公共数据环境相互作用的那些模块间的耦合。公共耦合的复杂程序随耦合模块的个数增加而增加。6内容耦合:这是最高程度的耦合,也是最差的耦合。

当一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
    
偶然内聚;逻辑内聚;时间内聚;通信内聚;顺序内聚;
     功能内聚(低――高)1偶然内聚指一个模块内的各处理元素之间没有任何联系。 2逻辑内聚指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。3时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。4通信内聚指模块内所有处理元素都在同一个数据结构上操作(有时称之为信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据。5顺序内聚指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素输出就是下一功能元素的输入。6功能内聚:这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。与其他模块的耦合是最弱的。耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。”

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

时间: 2024-10-17 23:15:41

对高内聚,低耦合的理解的相关文章

框架节构设计(高内聚低耦合)

内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事.它描述的是模块内的功能联系: 耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度.进入或访问一个模块的点以及通过接口的数据. 定义 高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低.  概念 内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高. 所谓高内聚是指一个软件模块是由相关性很强的

连载:面向对象葵花宝典:思想、技巧与实践(29) - 高内聚低耦合

高内聚低耦合,可以说是每个程序猿,甚至是编过程序,或者仅仅只是在大学里面学过计算机,都知道的一个简单的设计原则. 虽然如此流行和人所众知,但其实真正理解的人并不多,很多时候都是人云亦云. =============================================================== 要想真正理解"高内聚低耦合",需要回答两个问题: 1)为什么要高内聚低耦合? 2)高内聚低耦合是否意味内聚越高越好,耦合越低越好?   第一个问题:为什么要高内聚低耦合? 经

函数设计应做到低耦合,高内聚

        最近,同项目组的一位师姐请产假了,由我接手她之前的部分版本的开发工作.在开发的过程中,我阅读了某个很古老的版本的程序代码,心生感触,想在这里啰嗦几句.         该版本中很多函数的调用关系都错综复杂,让人读起来非常的费劲.我用如下的图来形象化地表示这种函数之间的调用关系.         箭头的指向为调用关系,如"函数A"调用了"函数B"."函数C"."函数D"."函数E"."

大型项目架构搭建_高内聚、低耦合(1)

软件开发中的项目的架构的终极目标就六个字: 高内聚.低耦合: 架构搭建好了,后期可维护性才能提高,在这基础上,如果还想提高项目的高效性,就只能从算法着手 如果项目中算法都已经做到极致了,还想提高项目的高效性,怎么办?(算法并不一定能处理高并发的问题) 就要用到中间件的技术了 下面我就从这三方面来搭建一个项目 假设我们有个这么需求 我公式和YC公式合作,开发一个项目,这个项目功能是用来测量东西的一个项目,我们公式在存储数据方面做得好,YC公司所以要和我们合作,要我们做一个对数据进行保存的容器,他们

[讨论]请用一个词来形容 高内聚,低耦合

问题描述 如果说原来没有采用低耦合的代码可以形容为[牵一发而动全身],多么的不好,那么高内聚该如何用一词形象的形容 解决方案 解决方案二:哎解决方案三:藕断丝连解决方案四:耦合到底是什么意思啊???解决方案五:高内聚,本人认为就是代码简洁...

专家回应车损险赔案争议:高保低赔仅是个案

完善商业车险制度调研迅速展开 4月1日,中国保险行业协会在京召开座谈会,就完善商业车险承保理赔工作听取相关专家学者的 意见和建议.据了解,下一步,中国保险行业协会还将召开消费者协会.汽车运输协会及部分车主的座谈会,召开司法部门.律师座谈会,以及其他形式的座谈会,广泛听取社会各界意见,全面调研和梳理现行车险制度. 3月29日,中国保监会下发<关于开展完善机动车辆商业保险制度调研工作的通知>,明确表示将在广泛调研的基础上,于9月底前推动全行业完成商业车险产品.承保理赔流程等制度方案的调整完善工作.

解决百度索引量的忽高忽低的办法

摘要: 最近百度算法也算是小有波动,11月23日周五百度周更53.51%网站普遍下降一半,百度索引量也是直接下降.相比site命令的估算值,百度统计提供的是百度索引量的精确值,通过官方渠道 最近百度算法也算是小有波动,11月23日周五百度周更53.51%网站普遍下降一半,百度索引量也是直接下降.相比site命令的估算值,百度统计提供的是百度索引量的精确值,通过官方渠道,大家可以了解百度搜索对网站收录情况.然而大部分人经常会碰到百度索引量的忽高忽低,这时我们应该如何解决? 1.网站内容 首先当百度

百度网站收录忽高忽低的真正原因

之前看到有人分析google和百度在网站收录上的差别,相信站长们都有体会,最直观的就是google对于网站目录挖掘的更深,收录的更快,而百度感觉得使劲给它喂料,还必须把需要收录的页面尽量放在关键位置,比如首页.今天就着重分析下百度在收录方面的特点. 1.特别重视网站首页 不管是百度还是google,首页都是评价一个网站的重要参数,对于一般定期更新的大网站,百度对首页的光顾率都是非常高的,能够达到天天快照和首页文章秒收不是很难. 而对于更新量小的网站来说,就如seo博客,就会出现差别了.博客的更新

重装win8系统内存占用忽高忽低的解决方法

  很多win8用户在使用一段时间后,系统就会变得特别的卡顿,故此很多用户都会选择对win8系统重装,但同样问题有来了,用户在重装win8系统后,出现内存不稳定,忽高忽低的问题,对于出现该问题是什么原因造成的?我们应用如何解决呢?下面看河东软件园小编为您带来的详细操作方法! 情况1: Win8系统,任何一款操作系统在运行时,电脑内存使用率都会出现时高时低的情况.应用程序等开的多了,占用的内存空间多了,内存自然就高.相反,程序使用的少了,内存自然就低了.同时,应用程序在运行过程中对内存的占用率也是