首页/开发/代码质量与评审速查/SOLID 速览:五项原则与记忆锚点
设计原则与模式62 条

SOLID 速览:五项原则与记忆锚点

SOLID 是五个面向对象设计原则的缩写(Martin 归纳):围绕「职责、扩展、替换、接口、依赖」五个视角,目标是让代码对变化友好;原则是权衡工具,不是评分表。

SOLID 速览

SOLID 是五个面向对象设计原则的缩写,由 Robert C. Martin 归纳:单一职责、开闭、里氏替换、接口隔离、依赖倒置。它们分别回答职责如何划分、扩展点放哪里、子类型能否安全替换、接口该多小、依赖方向朝向谁。五条都不是评分标准,而是描述问题的语言——用来指出结构上的具体风险,而不是给代码打分。

基本信息

来源Robert C. Martin 归纳的面向对象设计原则集合
组成SRP 单一职责、OCP 开闭、LSP 里氏替换、ISP 接口隔离、DIP 依赖倒置
使用方式按当前痛点选一条先落地,而不是同时追求五条
常见误用把原则当作抽象数量的指标,为指标而抽象

SOLID 五项速览

缩写原则一句话记忆典型信号
S单一职责 SRP一个变化原因类因多方需求被反复改
O开闭原则 OCP加扩展少改旧码新需求都要动同一段分支判断
L里氏替换 LSP子类可安全替换子类抛出不支持异常
I接口隔离 ISP接口按调用方拆实现类大量空方法
D依赖倒置 DIP都依赖抽象业务代码直接依赖框架类型

怎么用这五条

  • 先用它描述问题:说清哪条原则被破坏、具体后果是什么,再谈改法。
  • 按痛点选一条:当前最疼的是修改牵一发动全身,就先处理职责与开闭。
  • 结合变化预判:没有变化压力的抽象只会增加跳转成本。
  • 与测试配合:原则落地的效果是修改范围变小,这一点能在测试与改动成本上体现。
  • 用信号代替口号:与其说「违反了开闭原则」,不如指出「每加一种类型都要改这段判断」。
  • 引用具体位置:指出类名与行为,比引用原则名称更容易让作者认同并采取行动。
顺序无优先级:按当前痛点选一条先落地,比同时追求五条更可行。
原则是权衡工具而非评分表:抽象层次越多,理解成本越高,收益必须来自真实的变化压力。

易错点

  • 把 SOLID 当门禁指标:为指标而抽象,代码更绕、更难读。
  • 五条同时硬套:团队认知负担过重,最后一条也落不了地。
  • 为每个改动都找扩展点:抽象层暴增,简单需求被复杂化。
  • 只加分支不改结构:形式上有接口,实际仍是修改驱动。

数据来源与参考

  • Robert C. Martin · SOLID 归纳(《敏捷软件开发》《Clean Architecture》)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌