高内聚是什么意思-高内聚指组件紧密协作。
要是那锅子跟灶台、冰箱、洗碗机之间关系特别好,它们各自干自己的活,互不插嘴,就连略微掀翻一点锅都不会殃及洗碗机,那这灶台间肯定挺顺眼。
这就是高内聚。
反之,要是那锅子非要时刻盯着冰箱看,要么冰箱不让走就要借点气,那整个灶台间乱成一锅粥,锅子还在那儿乱折腾,那就是低内聚。 大量人一听到耦合,第一反应就是恐怖的画面。
那会儿写代码,时常认定模块之间联系忒深了,改一个函数得改十来个地方的逻辑,就连得重写整个后台。
那时候的项目团队常嘟囔:“哪位能告诉我,能不能把这两个模块拆开?”实际上这就是高内聚的典型表现——出于死死咬合在一起了。高内聚的模块就像独立的小车,司机自己拍板如何跑,只要别撞上路牌,它还能自由穿梭。
这种状态在软件里叫高内聚,在生物学里叫高变,认定它跟低内聚特别不一样,实际上是出于前者内部关系松散,后者关系忒紧,略微一扰动整个结构都得跟着动。 数据上也能看出来。
那会儿做大型项目,系统里模块的数量是爆炸式增长的,一旦某个功能模块升级要么出现 Bug,整个系统都得重做。
那时候的耦合度简直达到了天文数字,改个地方可能连旁边的同事都影响到了。目前的系统,哪怕是一个微服务,核心功能模块之间也只是通过接口轻轻搭伙,改动一个逻辑,其他模块可能根本察觉不到,这就是高内聚带来的红利。高内聚意味着系统内部的关系比较稀疏,模块之间互不干扰,各自独立发挥所长。 写代码的时候,你可能会遇到一种情况,模块看起来做得挺全,功能也细分得挺清楚,但一旦想拽它跟别的模块借点数据,就会报错。
这时候回头一看,原来这模块内部搞得忒复杂了,内部耦合度忒高。高内聚就是要把这种内部关系做得好办点。
比如你有一个负责计算报表的模块,要是里面把数据库查询、数据格式化、统计逻辑全塞一起,那内部就忒乱了。高内聚的做法就是把这些零散的事件拆分开,要么用更小的单元去承载这些逻辑,让每个单元只对自己负责的领域负责,外部只负责调用,这样系统才灵活。 另外,高内聚也是对程序员的一种考验。
要是模块之间联系忒深,想改一个地方就得天天盯着那些深一脚浅一脚的接口,挺好办写出“逻辑迷宫”。高内聚鼓励开发者把模块打磨成独立的个体,只关切它本身如何干好事,至于它如何跟外面的人打交道,那是外部类的责任。当模块对外暴露得忒干净利落,要么内部逻辑忒杂糅,高内聚自然就达标了。 说白了,高内聚就是让系统里的零件自己长得好看,不互相纠缠。它不代表模块务必孤孤单单,而是代表它们之间的互动不是为了互相依赖,而是为了协同工作。
要是模块之间彻底互不相干,那也会被认定是高的,但那种情况往往显得忒极端,少了协同。真正的高内聚,是既有明确的内部职责,又有合理的边界分隔。就像你买鞋,鞋跟子能自己站立,鞋面能自己合缝,只需求穿上去就行,这就叫高内聚。 最终把这些概念捋一捋,高内聚就是系统内部联系松散,模块之间独立性强,改动影响小。高耦合就是系统内部联系紧密,模块之间互相依赖,改动牵一发而动全身。在实际开发里,我们追求的就是第三方高内聚,也就是模块之间关系不要忒紧,但又不能忒远。
要是模块之间忒远,那沟通成本就忒高了,就像两个陌生人在路口见面,还得先自我介绍再去握手。
故此,高内聚是软件工程追求的目标,它让系统更清楚,更易于维护,也让团队的工作效率提升一个档次。
声明:演示网站所有内容,若无特殊说明或标注,均来源于网络转载,仅供学习交流使用,禁止商用。若本站侵犯了你的权益,可联系本站删除。
