在做rm比赛的过程中,发现文件和函数的代码规范逻辑十分重要,这不仅影响到自己看代码的方便与否,还影响到下届队员对我的代码的理解。因此打算开始规范自己的代码习惯,养成良好习惯,以后工作也能用上。

以下转自百度百科

内聚与耦合

耦合:是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。 模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水波效应,保证系统设计顺利进行。 耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标。

内聚:故名思议,表示内部间聚集、关联的程度,那么高内聚就是指要高度的聚集和关联。高内聚是指类与类之间的关系而定,高,意思是他们之间的关系要简单,明了,不要有很强的关系,不然,运行起来就会出问题。一个类的运行影响到其他的类。由于高内聚具备可靠性,可重用性,可读性等优点,模块设计推荐采用高内聚。内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。

内聚

偶然内聚:

一个模块内的各处理元素之间没有任何联系,只是偶然地被凑到一起。这种模块也称为巧合内聚,内聚程度最低。

逻辑内聚:

这种模块把几种相关的功能组合在一起, 每次被调用时,由传送给模块参数来确定该模块应完成哪一种功能 。

时间内聚:

把需要同时执行的动作组合在一起形成的模块称为时间内聚模块。

过程内聚:

构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。简单的说就是如果一个模块内的处理元素是相关的,而且必须以特定次序执行则称为过程内聚。例如某要完成登录的功能,前一个功能判断网络状态,后一个执行登录操作,显然是按照特定次序执行的。

通信内聚:

指模块内所有处理元素都在同一个数据结构上操作或所有处理功能都通过公用数据而发生关联(有时称之为信息内聚)。即指模块内各个组成部分都使用相同的数据结构或产生相同的数据结构。

顺序内聚:

一个模块中各个处理元素和同一个功能密切相关,而且这些处理必须顺序执行,通常前一个处理元素的输出时后一个处理元素的输入。例如某要完成获取订单信息的功能,前一个功能获取用户信息,后一个执行计算均价操作,显然该模块内两部分紧密关联。顺序内聚的内聚度比较高,但缺点是不如功能内聚易于维护。

功能内聚:

模块内所有元素的各个组成部分全部都为完成同一个功能而存在,共同完成一个单一的功能,模块已不可再分。即模块仅包括为完成某个功能所必须的所有成分,这些成分紧密联系、缺一不可。

耦合

非直接耦合:

两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。耦合度最弱,模块独立性最强。

数据耦合:

调用模块和被调用模块之间只传递简单的数据项参数。相当于高级语言中的值传递。

标记耦合:

调用模块和被调用模块之间传递数据结构而不是简单数据,同时也称作特征耦合。表就和的模块间传递的不是简单变量,而是像高级语言中的数据名、记录名和文件名等数据结果,这些名字即为标记,其实传递的是地址。

控制耦合:

模块之间传递的不是数据信息,而是控制信息例如标志、开关量等,一个模块控制了另一个模块的功能。

外部耦合:

一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为外部耦合。

公共耦合:

一组模块都访问同一个全局数据结构,则称之为公共耦合。公共数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。如果模块只是向公共数据环境输入数据,或是只从公共数据环境取出数据,这属于比较松散的公共耦合;如果模块既向公共数据环境输入数据又从公共数据环境取出数据,这属于较紧密的公共耦合。

公共耦合会引起以下问题:

1. 无法控制各个模块对公共数据的存取,严重影响了软件模块的可靠性和适应性。

2. 使软件的可维护性变差。若一个模块修改了公共数据,则会影响相关模块。

3. 降低了软件的可理解性。不容易清楚知道哪些数据被哪些模块所共享,排错困难。

一般地,仅当模块间共享的数据很多且通过参数传递很不方便时,才使用公共耦合。

内容耦合:

一个模块直接访问另一模块的内容,则称这两个模块为内容耦合。

若在程序中出现下列情况之一,则说明两个模块之间发生了内容耦合:

1. 一个模块直接访问另一个模块的内部数据。

2. 一个模块不通过正常入口而直接转入到另一个模块的内部。

3. 两个模块有一部分代码重叠(该部分代码具有一定的独立功能)。

4. 一个模块有多个入口。

内容耦合可能在汇编语言中出现。大多数高级语言都已设计成不允许出现内容耦合。这种耦合的耦合性最强,模块独立性最弱。

java高内聚低耦合什么意思_高内聚低耦合的理解相关推荐

  1. java高内聚低耦合什么意思_高内聚低耦合什么意思?合理通俗解释

    我们常听一些厉害的程序员说过高内聚.低耦合,小伙伴们知道它们是什么意思吗?下面听小编为你解析一下. 什么是低耦合? 官方的说,耦合就是元素与元素之间的连接.感知与依赖量度.元素代表什么?这里的元素代指 ...

  2. 频率计的交流耦合和直流耦合的区别_示波器DC/AC耦合设置及影响

    点击上方"电磁兼容检测",马上关注 示波器DC/AC耦合设置及影响 摘要:介绍了示波器的DC/AC耦合设置及其影响. 耦合指把电信号从一条电路连接到另一条电路使用的方法.在这种情况 ...

  3. 公办低分二本_分数较低的大学,400分的公办二本!

    分数较低的二本大学 [图文] 20192020年985最低分数线的大学汇总_大学生必备网 推荐您搜索:400分的高考理科考生只能报考独立学院了,也就是原来的三本院校.三本院校合并到二本批次招生后,原来 ...

  4. 高通骁龙cpu排行_高通骁龙865深度解读:CPU、GPU、内存全新升级

    12月3日的2019年骁龙技术峰会上,高通正式发布了骁龙865移动平台,这是高通第二代5G平台了,相比骁龙855平台有着全方位的升级,工艺.架构.能效及5G等方面再上一层楼. 业界权威网站Anande ...

  5. 低代码开发平台_什么是低代码和无代码开发平台?

    低代码/无代码开发平台是一种可视化软件开发环境,允许公民开发人员拖放应用程序组件,将它们连接在一起并创建移动或Web应用程序.这种模块化方法使专业开发人员可以免除他们逐行编写代码的需要,从而更快地构建 ...

  6. 高阶低通滤波算法_高/低算法

    高阶低通滤波算法 介绍 在我以前的文章中,我谈到了各种数据库标识符策略,在设计数据库模型时需要注意. 我们得出的结论是,数据库序列非常方便,因为它们在大多数用例中既灵活又高效. 但是,即使具有缓存的序 ...

  7. 高并发内存占用持续下降_高并发性能调试经验分享

    引文 4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?知乎原贴地址如下:腾讯实习生面试,这两道题目该怎 ...

  8. 高通的快充协议_高通:后续骁龙旗舰将标配100W快充

    高通于昨晚正式推出了Quick Charge 5充电解决方案,经过3年时间的准备,高通这一次在Quick Charge快充的升级可谓重磅,在功率上实现了重大突破,达到了100W. 官方数据显示,高通Q ...

  9. 廖雪峰讲python高阶函数求导公式_高阶函数 - 廖雪峰 Python 2.7 中文教程

    高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数abs()为例,调用该函数用以下 ...

最新文章

  1. Leetcode 552.学生出勤记录‖ 动态规划+容斥
  2. 梯度下降和随机梯度下降为什么能下降?
  3. GraphicsStatsService之1-dump数据的实现
  4. MySQL数据库----触发器
  5. c++框架有哪些_平顶彩钢活动房特点以及用途有哪些?
  6. Python_XPath
  7. xcode免证书真机调试iphone(ipad)程序的具体方法(总结贴)转贴)
  8. axis idea 设置apache_Axis2创建WebService实例 --- 接口发布
  9. Java中为什么使用事务?什么时候使用事务?如何使用事务?
  10. p5.js 实现创意绘板
  11. 网站特效圈小猫游戏代码
  12. 定时关机win10_Windows利用任务计划程序实现定时关[日常]
  13. python母亲节代码_python 计算 母亲节
  14. c#Form未能加载文件或程序集的解决方法
  15. 揭密Oracle之七种武器之三:破译古老的谜题---共享CBC Latch的秘密
  16. opencv图像全景拼接
  17. win10如何开启电源高性能模式
  18. Failed to open \EFI\BOOT\MMX64.efi -Not Found
  19. javaWeb基础一:JDBC (java操作数据库的技术)
  20. DDIA读书笔记 | 第七章:事务

热门文章

  1. MySQL DELETE语句
  2. 车载品牌音响被「软硬解耦」,扬声器赛道进入全新市场周期
  3. Android我自己的简易(秒表)计时器Chronometer
  4. C# OLEDB数据库
  5. android开发游记:meterial design 使用circularReveal仿哔哩哔哩(bilibili)搜索框动画
  6. Arcgis系列——gis读取ascii文件头格式
  7. keil软件之51与arm兼容性问题解决
  8. WPF自定义圆形按钮样式
  9. Android中的代理模式
  10. java超市管理系统ppt_基于java web超市管理系统.ppt