软件设计要求—“高内聚低耦合”

软件设计要求—“⾼内聚耦合
⼀、什么是耦合度
软件设计中通常⽤耦合度和内聚度作为衡量模块独⽴程度的标准。划分摸块的⼀个准则就是⾼内聚低耦合。耦合度(Coupling)是对模块间关联程度的度量。耦合的强弱取决与模块间接⼝的复杂性、调⽤模块的⽅式以及通过界⾯传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调⽤关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独⽴性越差。降低模块间的耦合度能减少模块间的影响,防⽌对某⼀模块修改所引起的“牵⼀发动全⾝”的⽔波效应,保证系统设计顺利进⾏。内聚和耦合密切相关,同其它模块存在强耦合关系的模块常意味这弱内聚,强内聚常意味着弱耦合。
耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独⽴性的⼀个指标,也是软件⼯程设计
及编码质量评价的⼀个标准。耦合的强度依赖于以下⼏个因素:
(1)⼀个模块对另⼀个模块的调⽤;
(2)⼀个模块向另⼀个模块传递的数据量;
(3)⼀个模块施加到另⼀个模块的控制的多少;
(4)模块之间接⼝的复杂程度。
耦合按从强到弱的顺序可分为以下⼏种类型:
a)⾮直接耦合:两模块间没有直接关系,之间的联系完全是通过主模块的控制和调⽤来实现的 
b)数据耦合:⼀个模块访问另⼀模块,彼此间通过简单数据参数来交换输⼊、输出信息。这⾥的简单数据参数不同于控制参数、公共数据结构或外部变量。 
北美论坛小说
c)标记耦合:如⼀组模块通过参数表传递记录信息,就是标记耦合。这个记录是某⼀数据结构的⼦结构,不是简单变量。 
d)控制耦合:⼀个模块通过传递开关、标志、名字等控制信息,明显的控制选择另⼀模块的功能 
e)外部耦合:⼀组模块都访问同⼀全局简单变量⽽不是同⼀全局数据结构,⽽且不是通过参数传递该全局变量的信息 
f)公共耦合:⼀组模块都访问同⼀个公共数
新经济导刊据环境。该公共数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。 
g)内容耦合:⼀个模块直接修改另⼀个模块的数据,或直接转⼊另⼀个模块 
内聚度是指内部各元素之间联系的紧密程度,模块的内聚种类通常可分为7种,按其内聚度从低
到⾼的次序依此为:偶然内聚、逻辑内聚、瞬时内聚、过程内聚、通信内聚、顺序内聚、功能内聚。
⼆、为什么要低耦合
了解什么是耦合及耦合的分类后,我想⼤家对为什么要降低耦合度已经有⼀定的认识,并且多数开发⼈员也⼤概尝尽了⾼耦合带来的苦
头。道理很简单,耦合度很⾼的情况下,维护代码时修改⼀个地⽅会牵连到很多地⽅,如果修改时没有理清这些耦合关系,那么带来的后果可能会是灾难性的,特别是对于需求变化较多以及多⼈协作开发维护的项⽬,修改⼀个地⽅会引起本来已经运⾏稳定的模块错误,严重时会导致恶性循环,问题永远改不完,开发和测试都在各种问题之间奔波劳累,最后导致项⽬延期,⽤户满意度降低,成本也增加了,这对⽤户和开发商影响都是很恶劣的,各种风险也就不⾔⽽喻了。
为了预防这些问题的发⽣,其中⼀个重要⼿段就是降低代码的耦合度。但也不可能有绝对的零耦合,⽐如基于J2EE编程那就必须和JDK
耦合,⽽且⾼耦合也不是⼀⽆是处,如果在设计前期预料到某功能后期基本不⽤修改,那么即使⾼耦合了也关系不⼤。但是,在还没有能⼒设计出基本不⽤修改的代码前,还得要求以低耦合为标准。那么怎样才能最⼤限度地降低耦合度呢?下⾯介绍降低耦合度的⼏种⽅法。
三、降低耦合度的⽅法
1、少使⽤类的继承,多⽤接⼝隐藏实现的细节。 java⾯向对象编程引⼊接⼝除了⽀持多态外,隐藏实现细节也是其中⼀个⽬的。
2、模块的功能化分尽可能的单⼀,道理也很简单,功能单⼀的模块供其它模块调⽤的机会就少。(其实这是⾼内聚的⼀种说法,⾼内聚低耦合⼀般同时出现,为了限制篇幅,我们将在以后的版期中讨论)。重建人类社会
3、遵循⼀个定义只在⼀个地⽅出现。
4、少使⽤全局变量。
5、类属性和⽅法的声明少⽤public,多⽤private关键字,
6、多⽤设计模式,⽐如采⽤MVC的设计模式就可以降低界⾯与业务逻辑的耦合度。
7、尽量不⽤“硬编码”的⽅式写程序,同时也尽量避免直接⽤SQL语句操作数据库。
8、最后当然就是避免直接操作或调⽤其它模块或类(内容耦合);如果模块间必须存在耦合,原则上尽量使⽤数据耦合,少⽤控制耦合,限制公共耦合的范围,避免使⽤内容耦合。
内聚:故名思议,表⽰内部间聚集、关联的长度,那么⾼内聚就是指要⾼度的聚集和关联。
⾼内聚:类与类之间的关系⽽定,⾼,意思是他们之间的关系要简单,明了,不要有很强的关系,不然,运⾏起来就会出问题。⼀个类的运⾏影响到其他的类。由于⾼内聚具备鲁棒性,可靠性,可重⽤性,可读性等优点,模块设计推荐采⽤⾼内聚。
这是软件⼯程中的概念,是判断设计好坏的标准,主要是⾯向OO的设计,主要是看类的内聚性是否⾼,偶合度是否低
25th hour“⾼内聚,低耦合”,⾸先要知道⼀个软件是由多个⼦程序组装⽽成,
⽽⼀个程序由多个模块(⽅法)构成!
“⾼内聚,低耦合”主要是阐述的⾯向对象系统中,各个类需要职责分离的思想。夹竹桃教学设计
每⼀个类完成特定的独⽴的功能,这个就是⾼内聚。耦合就是类之间的互相调⽤关系,如果耦合很强,互相牵扯调⽤很多,那么会牵⼀发⽽动全⾝,不利于维护和扩展。限塑令的意义
类之间的设置应该要低耦合,但是每个类应该要⾼内聚.耦合是类之间相互依赖的尺度.如果每个对象都有引⽤其它所有的对象,那么就有⾼耦合,这是不合乎要求的,因为在两个对象之间,潜在性地流动了太多信息.低耦合是合乎要求的:它意味着对象彼此之间更独⽴的⼯作.低耦合最⼩化了修改⼀个类⽽导致也要修改其它类的"连锁反应". 内聚是⼀个类中变量与⽅法连接强度的尺度.⾼内聚是值得要的,因为它意味着类可以更好地执⾏⼀项⼯作.低内聚是不好的,因为它表明类中的元素之间很少相关.成分之间相互有关联的模块是合乎要求的.每个⽅法也应该⾼内聚.⼤多数的⽅法只执⾏⼀个功能.不要在⽅法中添加'额外'的指令,这样会导致⽅法执⾏更多的函数.
推⼴开来说,这个思想并不限于类与类之间的关系。模块和模块,⼦系统之间也都要遵守这个原则,才可以设计出延展性⽐较强的系统。

本文发布于:2024-09-21 05:30:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/89956.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模块   耦合   内聚   关系   耦合度   设计   降低
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议