总会听到大牛们说到“高内聚,低耦合”,不是特别明白,最近查阅了一些资料,才明白。
‘高内聚,低耦合’是相对于代码而言,一个项目中:
每个模块之间相互联系的紧密程度,模块之间联系越紧密,则耦合性越高,模块的独立性就越差!反之同理;
一个模块中各个元素之间的联系的紧密程度,如果各个元素(语句、程序段)之间的联系程度越高,则内聚性越高,即‘高内聚’ !
如: 一个项目中有20个方法调用良好,但是要修改了其中一个,另外的19个都要进行修改,这就是高耦合!独立性太差!
现在的软件结构设计,都会要求“高内聚,低耦合”,来保证软件的高质量!mark!
转载:”高内聚 ,低耦合“到底是什么意思?blog.csdn.net
1.什么是高内聚,低耦合?
可以用简单的两句话来形容这两个词儿:
高内聚:躲进小楼成一统;
低耦合:各人自扫门前雪(牵一发而动全身)。
2.这是软件工程中的概念
首先要知道一个软件是由多个子程序组装而成,
而一个程序由多个模块(方法)构成!
而内聚就是指程序内的各个模块之间关系的紧密程度,
耦合是指各个外部程序(子程序)之间关系的紧密程度.
所以很容易明白,为什么要高内聚?模块之间的关系越紧密,出错就越少!
低耦合?子程序间的关系越复杂,就会产生更多的意想不到的错误!会给以后的维护工作带来很多麻烦!
// 注释:“内紧而外松”
内紧:程序内的模块之间要紧密相关,形成一个高效的功能单元;(旨在—创建高效的代码)
外松:程序之间呢,要尽可能的不关联,各自实现各自的功能。(旨在—实现分工)
3. 程序开发到高级阶段就是一个大工程,从头到尾由一个人实现是不可能的,于是就要分工模块化完成。即使是由一人完成的程序,内部按照MVC模式的话,也会由subroutine来完成各项功能。于是,对于模块化的开发,就有了这样的要求:高内聚低耦合。 // subroutine:子程序
如何理解这么晦涩的词儿呢?我们可以反过来看,如果不满足这个条件的程序会出现什么情况。低内聚的程序,就是“东一榔头西一棒棰”,想要用一个变量就当即定义一个变量。用完的变量也不清空,使用之前也不初始化。让人觉得零件落了一地;高耦合的程序,则“牵一发则动全身”。如果修改了某一个模块的接口,其他相关的模块都要从头重新测试。即使以前测试通过的,也受其改动的影响,要重新测试。由此会造成测试不完全而噩梦连连。做到这2点,对于OO的程序非常重要。各个模块,各司其职,将其功能在模块内,发挥之极;而在模块外,其他模块不用关心它是如何做到的,只要关心拿到的数据是满足自己需要的格式就可以了。这样即使以后修改起来,也知道在哪儿修改,怎么修改。修改了以后,造成的影响,以及可以控制和预知测试的范围。
转载:什么是高内聚,低耦合?_dongxiaohui2008的专栏-CSDN博客blog.csdn.net