首页/开发/代码质量与评审速查/设计原则评审清单(落地版)
设计原则与模式62 条

设计原则评审清单(落地版)

把原则变成评审问题:这段代码的依赖方向如何?新增同类能力要改几处?有没有为假想需求预留的机制?模块内是否只讲同一层的事?回答时不求一致,要求显式。

设计原则评审清单是什么

把抽象原则翻译成评审时可以逐条回答的问题:依赖方向指向哪里?新增一个同类能力要改几处?有没有为假想需求预留的机制?模块内是否只讲同一层次的事?清单的目的不是给出统一答案,而是让权衡过程显式化——原则之间经常冲突(例如 DRY 与 KISS),把取舍写下来比争论谁对更有效。

基本信息

用途评审与设计讨论中的提问工具
产出写进 PR 描述或 ADR 的取舍说明
原则不求答案一致,要求判断显式
配套与 SOLID 自检清单、重构评审要点一起用

评审十问(摘)

  • 依赖方向:核心模块是否 import 了框架或存储细节?
  • 扩展性:新增一个同类实现要碰哪些文件?
  • YAGNI:哪个机制目前无人使用?
  • 组合与继承:继承是否只为复用代码?
  • 封装:外部能绕过校验改内部状态吗?
  • 兼容:这个变更对调用方是破坏性的吗?
  • 抽象层次:同一函数里是否混着高层编排与底层细节?

评审提问模板

评审提问模板
1. 依赖方向:核心是否 import 了框架/存储细节?
2. 扩展性:新增一个同类实现要碰哪些文件?
3. YAGNI:哪个机制目前无人使用?
4. 组合/继承:继承是否只为复用?
5. 封装:外部能绕过校验改内部状态吗?
6. 兼容:这个变更对调用方是破坏性的吗?

# 结论句式:本 PR 选择 A 而不是 B,因为……
#(把取舍写进描述,下次同类讨论可直接引用)

原则与对应提问

原则提问典型处理
依赖倒置业务层是否直接依赖框架类型?内层定义接口,外层实现
开闭原则新增实现要改多少既有代码?引入显式注册点
YAGNI这个抽象当前有第二个使用者吗?先内联,等变化出现再抽
抽象层次一致同一函数是否混着不同层次?提炼低层细节为命名函数
清单的目标是让权衡过程可讨论:原则冲突时(如 DRY 与 KISS),把取舍写在 PR 描述里,比在评审里反复争论更省时间。
问题要问在具体处:问「这里是否有设计问题」没人能回答;问「新增一个 CSV 导出要改几处」立刻有唯一答案,讨论也就能推进。

易错点

  • 问完不记录结论:同类讨论重复发生,团队无法积累判断
  • 用清单给提交打分:指标化会诱发凑指标式设计,问题被移到看不见的地方
  • 提问过于抽象:得不到可回答的答案,评审变成表态
  • 把每条都当成硬性要求:合理例外被强行改写,代码复杂度上升

数据来源与参考

  • 综合《Clean Code》《重构》《设计模式》与 SOLID 论述的工程化提炼
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌