拥有干净整洁的软件架构并从项目开始就保持符合预定义的设计原则,是避免该软件系统未来可能出现的技术债务的最佳方法之一。
干净的软件设计是有效软件产品的关键点。让我们来看看确保干净的软件设计的一些重要原则、规则和指南:
原则:
-
松耦合——如果类相互使用,它们就会耦合在一起。耦合的类越少,更改它们就越容易。
-
高内聚——模块内部联系的紧密程度。类的组件应该是高度内聚的。
-
本地性——更改、维护、扩展仅在本地进行,本地修改不会影响整体。
-
可移除——软件组件应易于移除。
-
小组件——软件系统应该只有小组件,理想情况下每个组件只做一项任务。
类设计:
-
单一职责原则(SRP)—— 类应该只做一项任务。
-
开闭原则 (OCP) —— 类应该扩展而不是修改。
-
里氏替换原则 (LSP) ——子类必须能够替换它们的超类。
-
依赖倒置原则 (DIP) ——依赖反转。
-
接口隔离原则(ISP)——接口应该很小:类不应该实现不必要的方法。
聚合原则:
-
发布重用等效原则 (RREP) ——只有在一起的可发布组件才应捆绑在一起。
-
通用闭包原则 (CCP) ——一起更改的类应该捆绑在一起。
-
共同重用原则 (CRP) ——一起使用的类应该捆绑在一起。
耦合原理:
-
非循环依赖原则(ADP)——没有依赖循环。
-
稳定依赖原则(SDP)——依赖于稳定的方向。
-
稳定抽象原则(SAP)——越抽象,越稳定。
高级架构:
-
将可配置数据保持在高级别——常量或配置数据应保持在高级别。
-
不要不一致——有一个约定、原则、规则或指导方针,并始终遵循它们。
-
与 If/Else 或 Switch/Case 相比,更应该使用多态。
-
分离多线程代码——将多线程与其余代码隔离。
-
每层只有一层抽象——保持与现有的抽象层一致。
-
单例/服务定位器——利用依赖注入。
-
基类取决于它们的派生类——基类应该与任何派生类一起工作。
-
类的方法应该对它们所属类的变量和函数感兴趣,而不是其他类的变量和函数。
-
未使用的耦合——避免未使用的依赖。
-
隐藏耦合——确保对不同方法的调用顺序是正确的。
-
传递导航——编写隔离代码。类应该只能访问它的直接依赖项。
环境:
-
项目构建只需一步。
-
执行测试只需要一步。
-
源代码控制系统——始终使用源代码控制系统。
-
持续集成——通过持续集成确保完整性。
-
覆盖日志——不要覆盖警告、错误、异常处理。