- 一个模块直接访问另一个模块的内部数据 。
- 一个模块不通过正常入口而直接转入到另一个模块的内部 。
- 两个模块有一部分代码重叠(该部分代码具有一定的独立功能) 。
- 一个模块有多个入口 。
内聚,是描述一个模块内各元素彼此结合的紧密程度,是从功能角度来度量模块内的联系 。
- 低内聚:模块内的元素的职责相关性低,通常也意味着模块与外部是紧耦合的 。
- 高内聚:模块内的元素的职责相关性强,通常也意味着模块与外部是松耦合的 。
a. 偶然性内聚
偶然内聚,一个模块内的各元素之间没有任何联系,仅是恰好放在同一个模块内,业务的“Util/Helper”类有大量例子 。
- 问题的原因:通常是模块名起的过于抽象,导致不同职责的元素都可以放进去,从而引起了低内聚 。
- 问题的解法:将抽象的模块拆解成多个更小的具体模块,例如RetailTradeHelper可以拆为OrderAmountHelper/OrderPaymentParamHelper 。
b. 逻辑性内聚
逻辑内聚,把几种相关的功能组合在一起,由调用方传入的参数来确定具体执行哪一种功能 。
逻辑内聚是一种“低内聚”,某程度上对应了“控制耦合”,它把内部的逻辑处理暴露给了接口之外,当内部逻辑发生变更时,原本无辜的调用方也会受牵连改动 。
c. 时间性内聚
时间内聚,指一个模块内的组件除了在同一时间都会被执行外,相互之间没有任何关联 。
d. 过程性内聚
过程内聚,指一个模块内的组件以特定次序被执行,但相互之间没有数据传递 。
e. 通信性内聚
通信内聚,指一个模块内的组件以特定次序被执行,且相互之间传递和操作相同的数据 。
f. 顺序性内聚
顺序内聚,指一个模块内的元素以特定次序被执行,且上一步的输出被下一元素所依赖 。
g. 功能性内聚
功能内聚,指一个模块内所有组件属于一个整体,完成同一个不可切分的功能,彼此缺一不可 。
四、设计原则
设计原则,是指导我们如何设计出低耦合、高内聚的代码,让代码能够更好的应对变化,从而降本提效 。
设计原则的关键,是从使用方的角度看提供方的设计,一句话概括就是:请不要要我知道太多,你可以改,但请不要影响我 。
4.1 单一职责原则(SRP)
定义:一个函数/类只能因为一个理由被修改 。
单一职责原则,是所有原则中看起来最容易理解的,但是真正做到并不简单 。因为遵循这一原则最关键是职责的划分 。
职责的划分至少要回答两个基本问题:
- 什么是你,什么是我?
- 什么事情归你管,什么事情归我管?
4.2 开闭原则(OCP)
定义:对扩展开放,对修改关闭(不修改代码就可以增加新功能) 。
要理解开闭原则,关键是要理解定义中隐含着的两个主语,“使用方”和“提供方”,即:
推荐阅读
- 车辆识别代码是什么意思
- 音序怎么写在四线格里 音序怎么写
- 2022年各高校专业代码四位数 2022年各高校专业代码
- 诗歌的特征包括 诗歌的特征包括哪四个
- 新课程教学反思中的问题有哪些
- 幼儿园教学经验总结 教师个人教学经验总结
- 罗牛山学校教学质量怎么样
- 月份天数口诀手指视频 月份天数口诀歌
- python编程入门自学 游戏代码大全可复制免费
- 教学过程的本质表现在哪些方面 教学过程的本质属性是