内聚与耦合

今天看论文,偶然之间看到了内聚与耦合,距离我学习软件工程已经过去一年了,一些概念也都模糊了,今天来做一个复习。
首先,要明确内聚与耦合是软件工程中的概念,它的存在是判断软件设计好坏的标准。目的是为了使设计者考虑到模块的可重用性及移植性。通常,程序结构中模块的内聚程度越高,模块间的耦合程度就越低。

内聚

内聚是从功能角度来度量模块内的联系,比如说一个类作为一个模块的化,就应该对类的操作尽可能完善。

耦合

耦合是各个模块之间相互连接的一种度量,还拿C++来说,是各个类之间接口的复杂程度;耦合强弱取决于模块间接口的复杂程度、进入活访问一个模块的点以及通过接口的数据。

它们之间的关系

在软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。
划分模块的一个准则是高内聚低耦合:从模块粒度来讲,高内聚(尽可能使类的每个成员方法只完成一件大事,及最大限度的聚合)低耦合(减少类内部一个成员调用另一个成员方法);从类的角度看,高内聚(减少类内部对其他类的调用)低耦合;从功能块看,高内聚低耦合:减少模块之间的交互复杂度(例如接口数量,参数数据等),横向比较就是类与类之间、模块与模块之间的关联要尽可能少;因此整体设计尽可能使内容内聚,而数据耦合。

降低耦合度的方法

1.少使用全局变量
2.少使用类的继承,同时在类属性和方法生命中多使用private私有变量,而少使用public关键字
3.尽量不用“硬编码”方式写程序,多用设计模式,比如网页设计采用MVC的设计模式可以降低界面与业务逻辑的耦合度,大大减少代码量,比如尽量避免直接使用SQL语句来操作数据库。
4.避免直接操作活调用其他模块;如果模块间必须存在耦合,原则上尽量使用数据耦合少用控制耦合,限制公共耦合的范围,避免使用内容耦合。

增强内聚度方法

模块对外接口尽可能小,形成最低的依赖关系,使模块内的改变不影响其他模块。比如类之间的连接。

关于内聚与耦合的一些补充

内聚描述模块内的功能联系:有偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚
耦合实对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。 模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。非直接耦合(主模块控制和调用实现,耦合度最弱,模块独立性最强),数据耦合(值传递),标记耦合(传递地址),控制耦合(一个模块控制另一个模块),外部耦合(同一全局变量),公共耦合(同一数据结构),内容耦合(一模块直接访问另一模块,此种耦合耦合性最强,模块独立性最弱)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值