设计及编码质量改进之降低耦合度

利用Excel计算耦合度及耦合协调度 相信很多朋友遇到耦合度问题的时候一开始都会多少有些感到棘手,不知道该如何计算得出最终结果,接下来笔者就这个问题详细的进行阐释。 一、计算耦合度及耦合协调度的流程 1、数据标准化 由于数据需要进行无量纲化处理,因此首先需要对数据进行标准化,这里笔者建议使用极差法: 2、权重计算 计算权重的方法有很多,笔者建议使用主成分分析法,因为可以借助SPSS软件进行主成分分析,非常方便。 利用SPSS进行主成... 阅读详情

转自:http://blog.csai.cn/user1/46022/archives/2008/34195.html

一、什么是耦合度


        耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准。耦合的强度依赖于以下几个因素:(1)一个模块对另一个模块的调用;(2)一个模块向另一个模块传递的数据量;(3)一个模块施加到另一个模块的控制的多少;(4)模块之间接口的复杂程度。
 耦合按从强到弱的顺序可分为以下几种类型:
(1)内容耦合。当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。类与类之间直接调用或继承关系都是属于这种耦合。
(2)公共耦合。两个及两个以上的模块共同引用一个全局数据项就称为公共耦合。
 
(3)控制耦合。一个模块在界面上传递一个信号(如开关值、标志量等)控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合。
(4)标记耦合。模块间通过参数传递复杂的内部数据结构,称为标记耦合。此数据结构的变化将使相关的模块发生变化。
(5)数据耦合。模块间通过参数传递基本类型的数据,称为数据耦合。
(6)非直接耦合。模块间没有信息传递时,属于非直接耦合。
 
二、为什么要低耦合
 
   了解什么是耦合及耦合的分类后,我想大家对为什么要降低耦合度已经有一定的认识,并且多数开发人员也大概尝尽了高耦合带来的苦头。道理很简单,耦合度很高的情况下,维护代码时修改一个地方会牵连到很多地方,如果修改时没有理清这些耦合关系,那么带来的后果可能会是灾难性的,特别是对于需求变化较多以及多人协作开发维护的项目,修改一个地方会引起本来已经运行稳定的模块错误,严重时会导致恶性循环,问题永远改不完,开发和测试都在各种问题之间奔波劳累,最后导致项目延期,用户满意度降低,成本也增加了,这对用户和开发商影响都是很恶劣的,各种风险也就不言而喻了。
    为了预防这些问题的发生,其中一个重要手段就是降低代码的耦合度。但也不可能有绝对的零耦合,比如基于J2EE编程那就必须和JDK耦合,而且高耦合也不是一无是处,如果在设计前期预料到某功能后期基本不用修改,那么即使高耦合了也关系不大。但是,在还没有能力设计出基本不用修改的代码前,还得要求以低耦合为标准。那么怎样才能最大限度地降低耦合度呢?下面介绍降低耦合度的几种方法。
 
三、降低耦合度的方法  


1、少使用类的继承,多用接口隐藏实现的细节。 java面向对象编程引入接口除了支持多态外,  隐藏实现细节也是其中一个目的。 
2、模块的功能化分尽可能的单一,道理也很简单,功能单一的模块供其它模块调用的机会就少。(其实这是高内聚的一种说法,高内聚低耦合一般同时出现,为了限制篇幅,我们将在以后的版期中讨论)。      
3、遵循一个定义只在一个地方出现。      
4、少使用全局变量。      
5、类属性和方法的声明少用public,多用private关键字,
6、多用设计模式,比如采用MVC的设计模式就可以降低界面与业务逻辑的耦合度。
7、尽量不用“硬编码”的方式写程序,同时也尽量避免直接用SQL语句操作数据库。
8、最后当然就是避免直接操作或调用其它模块或类(内容耦合);如果模块间必须存在耦合,原则上尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,避免使用内容耦合。

软件耦合度的计算公式 我们总得找出一种计算方法来计算模块耦合的程度,一般采用以下的公式: (1)di: 输入数据参数的个数 (2)ci: 输入控制参数的个数 阅读详情

相关推荐

内聚度和耦合度的概念

内聚度------ 内聚度是前述信息隐藏和局部化概念的自然扩展,它标志一个模块内部各成分彼此结合的紧密程度。内聚度按其高低 程度可分为7级,内聚度越高越好。 1 内聚度简介 2 等级划分 内聚度简介 内聚度是前述信息隐藏和局部化概念的自然扩展,它标志一个模块内部各成分彼此结合的紧密程度。 等级划分编辑 内聚度按其高低程度可分为7级,内聚度越高越好。 1.最差的称为偶然内聚(coi

qq_33286818的博客 3487

Java当中什么是耦合、如何解(降低)耦合

什么是耦合性 耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。 什么是程序间的耦合 假如:当我去new一个对象的时候,而这个对象不存在,这个时候程序会报编译时异常,也就意味着程序连运行都运行不了。 如何解耦 我们可以利用Java的反射技术,通过类定名,来进行反射创建对象,这个时候我们可以成功的避免编译时异常,并且保证了项

怪咖@的博客 1万+

转录组数据提取技巧汇总

数据整理是数据分析的前提,而数据的正确提取则是数据整理的前提。

zfyyzhys的博客 1784

java 什么是耦合_什么是耦合、解耦

什么是耦合、解耦一、耦合1、耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。2、在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小。3、分类:有软硬件之间的耦合,还有软件各模块之间的耦合。耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式...

weixin_30970411的博客 4745

8、干式变压器

干式变压器的发展,是人类不断挑战材料科学和热物理极限的过程,每一次技术突破,都是在。温度升高,ε_r反而下降(因为分子活动性增强,极化响应变慢)。:固体导热的热阻比液体对流大一个数量级,这是无法逾越的物理规律。Nomex在高温下不是逐渐分解,而是保持性能直到一个临界点。如果 T_a = 40°C,则 T_c = 146.7°C。干式变压器(固体介质分隔):热场、电场、流场(空气)形成三维氢键网络,即使在高温下也能保持机械强度。:不是在现有技术上修修补补,而是寻找新的。仍在H级绝缘允许范围内(≤180°C)

renpeng2692873032的博客 229

27930-2023与27930-2015区别

描述了27930-2023与27930-2015的更新点

manjixingkong1234的专栏 3850

浅析java应用程序的耦合性

浅析java应用程序的耦合性

weixin_62079735的博客 1028

基于simulink的车道保持辅助系统(LKA)的仿真与实现

本文介绍了如何利用Simulink实现车道保持辅助系统(LKA)的仿真与建模。首先对比了车道偏离预警(LDW)和LKA的功能差异,强调LKA的主动干预特性。接着详细阐述了LKA系统架构,包括环境感知、决策控制等核心组件,并基于自行车模型建立车辆横向动力学方程。 文章重点演示了Simulink建模步骤:搭建车辆动力学模型、设计LKA控制器(采用LQR算法)、实现执行器接口和驾驶员干预检测。通过四个典型场景的仿真测试,验证了系统在直道行驶、弯道跟踪等工况下的控制性能,并给出了关键评价指标。最后展望了MPC控制、

amy_mhd的博客 228

软件模块之间耦合度的强弱排序

高内聚、低耦合是软件设计中非常关键的概念。耦合度越低,两个模块之间相互影响越小,独立性越强,越容易维护和扩展。以下由耦合度由高向低做一说明,在软件设计中尽量降低模块之间的耦合度。 内容耦合:一个模块直接操作另外一个模块的数据,称为内容耦合。如:模块A有一个方法,直接读取模块B的一个数据变量c进行下一步操作,此时开发模块B的程序员将c变量删除或改名,则模块A直接崩溃。举个例子,甲盖房子时,把自家的梁架在邻居乙的柱子上,邻居乙拆自家房子时,甲的房子倒了。开发软件时绝不允许这种事情发生,但有些新手就能给你写出来

guoyp2126的博客 1万+

MicroCap声学仿真介绍(三)-人耳的频率响应

这里需要注意的是,24mm我们会填为”24m”,这里的“m”是毫的意思,24m意思是24e-3,同理7.4mm我们可以填为7.4m,意思是7.4e-3。MicroCap声学库中,已内置“声源”模块和“管”模块,我们需要调用这两个模块,并用连接线将这两个模块连接到一起,完成仿真工作。上图中第一个图是在管的一端输入1Pa(94dBSPL)的信号,管的另一端的不同频率的声压大小的仿真结果。上述的结果跟我们的常识也是符合的。换言之,我们要仿真的目的是在管的一端加1pa的声压时,管的另一端不同频率下的声压分布。

山无忧的博客 1472

Android驱动工程师职位(侧重于Bringup、外设驱动调试、芯片平台经验)

本文摘要:深圳泓京纬科技招聘Android驱动工程师,要求具备Bootloader/LK/Linux Bringup经验,熟悉LPDDR/eMMC/UFS等存储设备调试。文章详细解析了Android系统架构、Linux驱动开发核心概念、设备树作用、串口调试方法等基础知识。重点介绍了存储驱动架构、性能优化和故障排查技巧,包括eMMC识别问题、UFS性能优化、NAND ECC错误处理等实战场景。同时涵盖芯片平台开发经验、跨部门协作调试方法,以及低温环境等特殊场景的问题解决方案。

郑伟强dev的专栏 249

java程序的耦合度是什么

程序的耦合度是 你的子程序之间的相关联性,也就是说你的多个类的联系 是否太紧密,打个比方,你房子里边有窗子 ,那房子 和窗子 就有了关联 耦合度 是松还是紧 就看你的 关联 是强还是弱,也就是修改的代价,比如 你窗子是扣死在墙里的 那么你修改窗子 就必须修改墙 这就比较紧密了,但是如果你窗子是按照某种规格的 可以自由拆装的 那么修改的代价就小,耦合度也就低了 我们写程序的目标就是 高内聚

小明的博客 5193

dolphinscheduler-3.4.0

dolphinscheduler集群部署

docsz的博客 661

耦合度的计算

耦合度计算原理 耦合度指标意义与原理 耦合:物理学上指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。 耦合度是测量两个或多个以上的物体或系统的运动协调程度。 量表: 其中涉及的问题主要涉及如下 建立两个系统的耦合模型,确定指标及权重,计算耦合度、耦合协调度 基础理论(建议只看理论部分,计算部分使用代码解析更清晰): 一、计算耦合度及耦合协调度的流程 1、数据标准化 由于数据需要进行无量纲化处理,因此首先需要对数据进行标准化,这里笔者建议使用极差法: 2、权重计算 计算权

Leon的博客 4万+

使用pyqt5实现可勾选的测试用例界面

使用pyqt5实现可勾选的测试用例界面

天赐好车的博客 629

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

耦合度&如何降低耦合度

一、什么是耦合度   耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准。耦合的强度依赖于以下几个因素:(1)一个模块对另一个模块的调用;(2)一个模块向另一个模块传递的数据量;(3)一个模块施加到另一个模块的控制的多少;(4)模块之间接口的复杂程度。   耦合按从强到弱的顺序可分为以下几种类型:   (1)内容...

mao_xiaoxi的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

代码耦合度

代码耦合 一、什么是耦合度 耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准。耦合的强度依赖于以下几个因素:(1)一个模块对另一个模块的调用;(2)一个模块向另一个模块传递的数据量;(3)一个模块施加到另一个模块的控制的多少;(4)模块之间接口的复杂程度。 耦合按从强到弱的顺序可分为以下几种类型: (1)内容耦合。当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改

pangundong的博客 6246

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

聊聊什么是耦合度

单一职责原则的定义是:一个类应该只有一个引起它变化的原因。也就是说,一个类只应该有一项主要的职责或功能。降低类的复杂度,优化类的可读性和可维护性提高类的内聚性提高代码的可复用性有利于单元测试,测试时只需针对一个职责降低代码修改带来的风险一个类实现了多个不相关的功能,类名称难以描述其职责一个类中的方法数量过多,完成了许多细节功能修改一个功能会影响类中的其他功能为每个职责创建单独的类使用设计模式避免职责过多的类将无关职责的代码拆分到不同的类中。

沉梦听雨的博客 1万+

java 耦合度_耦合度&如何降低耦合度

一、什么是耦合度耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准。耦合的强度依赖于以下几个因素:(1)一个模块对另一个模块的调用;(2)一个模块向另一个模块传递的数据量;(3)一个模块施加到另一个模块的控制的多少;(4)模块之间接口的复杂程度。耦合按从强到弱的顺序可分为以下几种类型:(1)内容耦合。当一个模块直...

weixin_33573857的博客 1958

耦合度

软件工程中对象之间的耦合度就是对象之间的依赖性。对象之间的耦合度越高,维护成本越高。 耦合性:是对模块关联程度的度量。耦合的强弱取决于模块间接口的复杂性,调用模块的方式以及通过界面传递数据的多少。 模块间联系越多,其耦合性越强,同时表明其独立性越差。 耦合分以下几种: 内容耦合 > 公共耦合 > 外部耦合 > 控制耦合 > 标记耦合 > 数据耦合 > 非直接耦合 内容耦合。 当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过正常入口而转入另一个模块时,这样的

qq_45697630的博客 3582

耦合度是什么意思

耦合度是什么? 如何降低耦合度

Li2992673708的博客 2251

降低耦合度

耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准。耦合的强度依赖于以下几个因素:(1)一个模块对另一个模块的调用;(2)一个模块向另一个模块传递的数据量;(3)一个模块施加到另一个模块的控制的多少;(4)模块之间接口的复杂程度。   耦合按从强到弱的顺序可分为以下几种类型:   (1)内容耦合。当一个模

Vindra's blog 2432

耦合度越低越好吗?

先说说3层架构,一般数据层,业务层,表示成。 一般针对某一机能,一般分3个类,XXView,XXBusiness,XXDao。 通常的情况下,XXBusiness和XXDao是组合关系,即XXBusiness有一个XXDao的对象。 一般情形如下 XXBusiness{ private XXDao mXXDao ; public XXBusiness(){ XXDao = new XXDao (...

xie__jin__cheng的博客 6874

耦合度举例分析、结合面向对象5关系分析、耦合度再分类

一 耦合度举例说明 (1) 内容耦合。当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过正常入口而转入另一个模块时,这样的耦合被称为内容耦合。内容耦合是最高程度的耦合,应该避免使用之。 ![内容耦合](https://img-blog.csdnimg.cn/20190521102342182.png) class A{ public int data_a; } class B{...

xie__jin__cheng的博客 4299
上一篇: 完成端口(I/O completion)
下一篇: 一个优秀软件开发人员的必修课:低耦合
UU_Yang
博客等级 码龄23年 926粉丝 213原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值