知识卡片

YAGNI不是不设计而是推迟不必要的设计决定

普通读书笔记卡 · 1804.c

内容

有人误以为敏捷(XP)意味着不做设计直接写代码,但YAGNI真正的意思是”不要做不必要的工作”,而非”不要做必要的工作”——真正需要前端设计的地方XP同样要求先设计。价值在于:需求不清时动手设计大概率是猜测,猜错的部分白费功夫还会变成长期维护负担;把不紧急的决定往后推,看清需求再决定能省大量返工成本。

参考来源

- 位置:《架构之美》第2章《两个系统的故事:现代软件神话》2.2节《设计之城》及2.2.2节《故事展开》"延迟设计决定"(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0108.xhtml, part0109.xhtml) - 结论依据:原文明确"XP没有贬低设计,它贬低的是不必要的工作(即YAGNI原则,You Aren't Going To Need It)。但是,如果需要前端设计,XP就要求你进行设计",并说明"当你开始创建软件设计时就加入所有可能需要的东西……是危险的……延迟设计决定,直到你必须做出这些决定为止"。 - 原始内容:XP没有贬低设计,它贬低的是不必要的工作(即YAGNI原则,You Aren't Going To Need It)……当你开始创建软件设计时就加入所有可能需要的东西(包括厨房水槽)是危险的……延迟设计决定,直到你必须做出这些决定为止。