首页/开发/代码质量与评审速查/DRY:知识重复的边界
设计原则与模式62 条

DRY:知识重复的边界

DRY(Don't Repeat Yourself)针对的是知识重复:同一规则在多处表述,改动需同步;外观相似的代码若语义不同、会独立变化,硬合并反而制造错误耦合。

本质规则/知识的单一表述
误用把巧合相似当重复,强行抽取
判断两段代码是否因同一需求同时改动

相似但语义不同

相似但语义不同
// 用户校验与管理员校验:规则现在相同、将来分化
// 直接抽成同一个函数:一方改规则即误伤另一方
// 可先保留两份,等变化节奏一致再合并
DRY 的检验器是「变化」:改动一个需求时被迫改多处,才是真重复。

易错点

  • 按字符串相似度自动合并:语义漂移的两段代码被绑死
  • 注释不一致时不处理:文档中的重复同样要治理

数据来源与参考

  • 《The Pragmatic Programmer》· DRY 条目;《重构》重复代码相关讨论
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌