正如我已经越来越被吸收思维敏捷到我的工作方式,YAGNI(“你不会需要它”)似乎变得越来越重要。在我看来,是最有效的规则来过滤掉误导优先事项,并决定什么样的的下一个工作的一个。

然而YAGNI似乎是,几乎没有关于低声这里在SO的概念。我跑的强制性搜索,并且它仅在一个问题的标题显示出来 - 然后在次要作用

这是为什么?我是不是高估了它的重要性?

声明。为了抢占我敢肯定,我会在异议得到答复,我要强调,YAGNI是快速和肮脏的相反。它鼓励你专注你宝贵的时间和精力上得到部分你需要正确的。

下面是一些现成的顶部正在进行的一个问题可能会问。

被选中我的单元测试根据用户的要求,或骨架结构

我是在安装(和测试和维护)单元测试是只有在那里,因为他们掉出框架?

如何通过我的框架生成的代码有很多我从来没有看过(但仍可能会咬我一天,即使YAGNI)?

多少时间,我会花我的工作的工具,而不是用户的问题?

当对编程,观察者的角色值往往在于“YAGNI”。

你使用一个CRUD工具?是否允许(不,鼓励)你使用它作为一个_RU_工具,或C__D工具,或者是你创建四块码(加四个单元测试)时,你只需要一个还是两个?

有帮助吗?

解决方案

TDD的方式已归入YAGNI。如果你这样做TDD正确,也就是只写那些导致所需的功能测试,然后开发最简单的代码通过测试,那么你是以下默认YAGNI原则。根据我的经验,只有当我得到的TDD外箱,并开始测试前,测试的事情,我并不真正需要,或代码比最简单的方式更多地传递我违反YAGNI测试编写代码

在我的经验,后者是我最常用的失言做TDD的时候 - 我倾向于跳跃前进,并开始编写代码来通过一个测试。这通常会导致我基于我的代码,而不是什么需要的要求进行测试有先入为主的观念影响了余下的测试。

因人而异。

其他提示

和YAGNI KISS(保持简单,笨)基本上是相同的原理。不幸的是,我看到KISS大约为经常提到我看“YAGNI”。

在我的旷野的一部分,项目延期和失败的最常见原因是不必要的组件的执行力差,所以我跟你的基本情感认同。

<强>自由改变驱动器YAGNI 即可。在瀑布项目中,口头禅是控制范围。范围是通过建立与客户的合同控制。因此,客户充塞他们所能范围文档明知变化范围将是困难的,一旦合同签订至少在心里想着。其结果是,你最终拥有的功能一箩筐,而不是一组具有价值功能的应用程序。

使用敏捷项目,产品所有者建立一个优先的产品积压。开发团队基于优先级,即价值构建功能。其结果是,最重要的东西,会首先建造。你最终与具有由用户看重功能的应用程序。这不是重要的东西脱落的列表或没有得到实现。也就是说YAGNI。

虽然YAGNI不是实践中,它是优先积压列表的结果。商业合作伙伴提供值的业务因为他们可以改变和reprioritized产品积压从次迭代的灵活性。这足以解释说,YAGNI是获得了当我们欣然接受变化,甚至在后期过程中受益。

我发现的问题是,人们往往斗甚至写工厂,使用DI容器(除非你已经在你的代码库)YAGNI下。我同意王JB那里。对于很多人来说,我有YAGNI合作似乎是偷工减料/写马虎代码的许可证。

例如,我在写用于提取多个模型/制造商的PIN键盘一个PIN键盘API。我发现,我就必须整体结构,我甚至不能写我的单元测试。可能我不是TDD的经验十分丰富实践者。我敢肯定,还会有不同的对我所做的是YAGNI与否。意见

我看到的SO引用过早的优化很多帖子是YAGNI的形式,或至少ydniy(你不需要它尚未)。

我不明白YAGNI作为快速和肮脏的对面,真的。这是做正是需要并没有更多的,而不是像计划软件有人写有持续50年。它可能会很少,因为没有真的,很多问题要问周围,至少在我的脑海里。类似于“不重复自己”和“保持简单,愚蠢”这很普遍,但不一定解剖和101种分析规则。有些东西是非常简单,它通常是做一个小的做法之后不久得到。有些东西得到发展的幕后,如果你回头看看,你会发现他们可能是另一种方式来陈述的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top