架构风格与模式58 条

DRY、KISS 与 YAGNI

三条通用设计原则:DRY 指知识的唯一来源(不是禁止任何重复代码),KISS 指优先选择简单方案,YAGNI 指不实现当前不需要的能力。

原则

原则含义常见误用
DRY同一知识只表达一次为消除表面重复强行抽象出错误概念
KISS简单方案优先把简单问题包装成通用框架
YAGNI只做当下需要的能力拒绝必要的扩展点设计
三者与“为变化而设计”并不矛盾:为已知的具体变化预留边界,而不是为想象中所有变化预留。

易错点

  • 两个模块恰好代码相同就合并,耦合了两个独立变化方向
  • 以 YAGNI 为由拒绝任何抽象,后续替换成本剧增

数据来源与参考

  • Andrew Hunt & David Thomas《The Pragmatic Programmer》
  • Ron Jeffries《You're NOT gonna need it!》(XP)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌