01-设计原则

设计原则 — Rust Design Patterns

译文 · 基于 Rust Design Patterns

原文链接: https://rust-unofficial.github.io/patterns/additional_resources/design-principles.html

设计原则

常见设计原则概览


SOLID

CRP(组合复用原则)或组合优于继承

「该原则主张:类应通过组合(包含实现所需功能的其他类的实例)而非从基类或父类继承,来偏好多态行为与代码复用」—— Knoernschild, Kirk (2002). Java Design - Objects, UML, and Process

DRY(不要重复自己)

「系统中的每一条知识都必须有单一、明确、权威的表示」

KISS 原则

多数系统在保持简单而非变得复杂时工作得最好; 因此,简单性应是设计的关键目标,应避免不必要的复杂性

迪米特法则(LoD)

给定对象应对其他任何事物(包括其子组件)的结构或属性做尽可能少的假设,以符合「信息隐藏」原则

契约式设计(DbC)

软件设计者应为软件组件定义形式化、精确且可验证的接口规格说明,它们在抽象数据类型的普通定义之上扩展了前置条件、后置条件与不变量

封装

将数据与操作这些数据的方法捆绑在一起,或限制对对象某些组件的直接访问。封装用于把结构化数据对象的值或状态隐藏在类内部,防止未授权方直接访问它们。

命令查询分离(CQS)

「函数不应产生抽象副作用……只有命令(过程)才被允许产生副作用。」——Bertrand Meyer: Object-Oriented Software Construction

最少惊讶原则(POLA)

系统中的组件应以多数用户会预期的方式表现。其行为不应令用户惊讶或意外

语言模块单元

「模块必须对应于所用语言中的句法单元。」——Bertrand Meyer: Object-Oriented Software Construction

自文档化

「模块的设计者应努力使关于该模块的所有信息都成为模块本身的一部分。」——Bertrand Meyer: Object-Oriented Software Construction

统一访问

「模块提供的所有服务都应通过统一的记法可用,该记法不泄露它们是通过存储还是通过计算实现的。」——Bertrand Meyer: Object-Oriented Software Construction

单一选择

「每当软件系统必须支持一组备选方案时,系统中有且仅有一个模块应知道它们的穷尽列表。」——Bertrand Meyer: Object-Oriented Software Construction

持久化闭包

「每当存储机制存储一个对象时,它必须连同该对象的依赖一并存储。每当检索机制检索先前存储的对象时,它也必须检索任何尚未检索的该对象的依赖。」——Bertrand Meyer: Object-Oriented Software Construction

最后修改 August 21, 2026: 更新 (76fc81a2e)