阅读本文时,请注意软件术语均在括号内用红色标注
高内聚与松耦合,通俗的说就是我国的一句古话:各人自扫门前雪,莫管他人瓦上霜。
我来解释一下,假设你是“面向对象”(面向对象oop)小区的一个居民你的名字叫做“类”(类),你不仅可以把自己门前雪扫干净,还可以帮别人家把雪扫干净。
其一,你会不会觉得自己的活干的有点多(这时你就成了传说中的“上帝对象”,一个类把活全干了)。
其二,如果你要帮助别人家扫雪,要和各家各户协商,最后要合理分配扫雪时间,安排顺序,遇到突发问题时说不定你还要处理夫妻的感情纠纷呢,我相信你会遇到各式各样的问题。原本都与扫雪工作本身无关的工作被引入进来(类的工作很多,并且互不相关,这叫低内聚)。
其三,如果有人搬出了小区(类的删除),或者又有人搬进了小区(类的增加),再或者有人改造了自己院子(类改变)。这些改变(软件需求的变更)你无法预期,那只能动态的适应,现在事情更复杂了。(任何一个类的变化都会影响到你,真是改来改去呀)。
其四,如果你想修改下关于扫雪的一些事宜,全小区的居民都要跟你重新协商扫雪事宜,说不定那户居民就跟你闹矛盾呢。(你的修改导致很多类同样需要修改,bug也随之而生)。
其五,如果你有一天生病了,可能是干活太累了(一个类庞大且复杂难免不出现问题),那其他人怎么办呢?平时都是你负责的,你走了没人负责。你一生病全小区的雪都没人扫了,小区彻底瘫痪了。
想到了吗?这就是低内聚和紧耦合的弊病呀!
那么如果是高内聚,低耦合呢,不就是每个人各司其职,每个人都是自己能做的事情自己做,谁也不需要谁的帮助(减少互相依赖,松耦合),安下心来把自己事情安排合理(整合任务,高内聚)。
总之一句话,各人自扫门前雪,莫管他人瓦上霜。