软件开发、设计、架构的五大原则
唯一不变的就是变化本身。
我们经常讲的系统、子系统、模块、组件、类、函数就是从逻辑上将软件一步步分解为更细微的部分,即逻辑单元, 分而治之, 复杂问题拆解为若干简单问题, 逐个解决。
逻辑单元内部、外部的交互会产生依赖,从而产生了内聚、耦合概念。内聚主要描述逻辑单元内部,耦合主要描述逻辑单元之间的关系。
我们经常讲的高内聚,低耦合,如何做到,做到的标准是什么?
这就是开发、设计、架构的五大原则所体现出的价值,最终达到高内聚,低耦合的软件目标。
耦合
逻辑单元之间存在依赖, 导致改动可能会互相影响, 关系越紧密, 耦合越强,逻辑单元独立性越差。
比如模块A直接操作了模块B中数据, 则视为强耦合, 若A只是通过数据与模块B交互, 则视为弱耦合。
内聚
逻辑单元内部的元素, 关联性越强, 则内聚越高, 逻辑单元单一性更强。 一个逻辑单元应当尽可能独立完成某个功能。
比如有各种场景需要被引入到当前模块, 代码质量将变得非常脆弱, 这种情况建议拆分为多个模块。
高内聚、低耦合
内聚性,又称块内联系。指逻辑单元的功能强度的度量,即一个逻辑单元内部各个元素彼此结合的紧密程度的度量。
耦合性,又称块间联系。指逻辑单元相互联系紧密程度的一种度量。
比如电脑USB口。可以插入USB口工作的设备和电脑都是低耦合性,电脑不依赖于外部任何外部USB设备,只要你符合USB规范,插上就可以用。USB规范就像一个抽象类,所有外部设备必须实现抽象类,确保能被正确调用。
设计模式、SOLID原则等都是为了更好的做到高内聚、低耦合。
SOLID原则
- S:单一职责原则 (Single Responsibility Principle)
- O:开闭原则 (Open/Closed Principle)
- L:里氏替换原则 (Liskov Substitution Principle)
- I:接口隔离原则 (Interface Segregation Principle)
- D:依赖倒置原则 (Dependency Inversion Principle)
上述是面向对象编程的关键原则。诸如此类的设计原则能够帮助开发人员构建更易于维护、扩展的系统。
详细讲解请阅读软件开发、设计、架构的五大原则