高内聚,低耦合

本文探讨软件设计中的高内聚与低耦合原则,分析其对代码可读性、复用性和可维护性的影响,并通过实例说明如何在实际开发中应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高内聚:

  内聚,更为专业的说法叫功能内聚,是对软件系统中元素职责相关性和集中度的度量。如果元素具有高度相关的职责,除了这些职责内的任务,没有其它过多的工作,那么该元素就具有高内聚性,反之则为低内聚性。

  其实结合OOP的思想,高内聚应该是更加趋向于接口化,工厂模式可以很容易体现这种思想。即方法调用,只要通过相应的接口,即可得到不同的实现。无需修改接口对应类的内容及实现方式。

举例理解:

  这就好像,如果我是一个项目经理,我的职责是监控和协调我的项目各个阶段的工作。当我的项目进入需求分析阶段,我会请求需求分析员来完成;当我的项目 进入开发阶段,我会请求软件开发人员来完成;当我的项目需要测试的时候,我会请求测试人员。如果我参与了开发,我就不是一个高内聚的元素,因为 开发不是我的职责。简单说,各司其职

那么高内聚的好处是什么呢?

1.可读性

如果一段程序条理非常清晰,每个类通过名称或说明都能清楚明白它的意义,类的每个属性、函数也都是易于理解 的它所应当完成的任务和行为,这段程序的可读性必然提高。

2.复用性

在软件开发中,最低等级的复用是代码拷贝,然后是函数的复用、对象的复用、组件 的复用。代码复用也使我们的代码在复用的过程中不断精化、不断健壮、提高代码质量。

3.可维护性和易变更性

高内聚的软件,每个系统、模块、类的任务都高度相关,就使每一次的变更涉及的范围缩小到最小。比如评审表发生了变更,只会 与评审表对象有关,我们不会去更改其它的对象。如果我们能做到这一点,我们的系统当然是可维护性好、易变更性好的系统。

低耦合 :

         低耦合是用来度量模块与模块直接的依赖关系。模块之间不要过度依赖其他模块 

举例:

        电器与插座之间是低耦合的关系,就算我替换了不同的插座,电器依然可以正常的工作。因此简单的描述如下,就是A模块与B模块存在依赖关系,那么当B发生改变时,A模块仍然可以正常工作,那么就认为A与B是低耦合的。

比如现在的mvc模型,就将页面和业务逻辑分离,如果需要改页面,那么业务逻辑不会有影响,如果需要修改业务逻辑,那么页面不会受到影响。

但是:

1. 低耦合是有一定代价的,因为低耦合是以增加资源消耗和代码复杂度来实现的,所以我们努力降低耦合,只是在那些可能变更的地方。

2. 高内聚,低耦合本身就有一定的矛盾,我们只有把握住度,选择恰当的方法 

3. 高内聚有时候也不是说所有的情况都采用这样的原则,当然高内聚还是要适度的,下面来举例说明:例如内聚性要求强的话就像Windows32中系统提供的API,里面的函数太多了,都放在一个Dll中,那么每个函数完成一个功能。这样强大的功能,会比较复杂,所以并不是完全的高内聚越高越好,还是要看实际的需要。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值