unit-testing - YAGNI - 不得命名的敏捷实践?

标签 unit-testing agile extreme-programming yagni

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

3年前关闭。




Improve this question




随着我越来越多地将敏捷思维融入到我的工作方式中,yagni(“你不需要它”)似乎变得越来越重要。在我看来,这是过滤掉被误导的优先事项并决定下一步不工作的最有效规则之一。

然而,yagni 似乎是一个在 SO 上几乎没有人谈论过的概念。我运行了强制性搜索,它只出现在一个问题标题中 - 然后是次要角色。

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

免责声明。为了抢先我确定我会反对的回应,让我强调 yagni 是 与快速和肮脏相反 .它鼓励您将宝贵的时间和精力集中在获得正确的零件上。

以下是人们可能会问的一些现成的持续问题。

我的单元测试是根据用户需求还是框架结构选择的?

我是否正在安装(并测试和维护)单元测试,因为它们不属于框架?

我的框架生成的代码中有多少是我从未看过的(但总有一天会咬我,即使是 yagni)?

我花了多少时间在我的工具而不是用户的问题上?

结对编程时,观察者的角色值(value)往往在于“yagni”。

你使用 CRUD 工具吗?它是否允许(不,鼓励)您将其用作 _RU_ 工具或 C__D 工具,或者您是否在只需要一两个代码时创建了四段代码(加上四个单元测试)?

最佳答案

TDD 以某种方式包含了 YAGNI。如果你把TDD做的正确,也就是只写那些产生需要的功能的测试,然后开发最简单的代码通过测试,那么你就默认遵循了YAGNI原则。根据我的经验,只有当我跳出 TDD 框并开始在测试之前编写代码、测试我并不真正需要的东西或代码不是通过测试的最简单方法时,我才违反了 YAGNI .

根据我的经验,后者是我在进行 TDD 时最常见的失礼——我倾向于提前开始编写代码以通过下一个测试。这通常会导致我通过基于我的代码而不是需要测试的要求的先入为主的想法来妥协剩余的测试。

天啊。

关于unit-testing - YAGNI - 不得命名的敏捷实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/369897/

相关文章:

java - 对构建器方法进行单元测试

unit-testing - 将常量添加到 PHPUnit 中的模拟

java - 模拟配置接口(interface)作为练习?

c# - 多程序员编程 IDE 或插件

templates - 在哪里可以找到最佳的用户案例模板?

c# - 你如何使用 Moq 来模拟一个简单的界面?

architecture - 在仍然忠于敏捷的同时,如何避免技术债务,即: avoiding violation of YAGNI and avoiding BDUF?

integration - Scrum 中集成的用户故事

project-management - 在敏捷环境中对大型项目进行估算

design-patterns - 我在哪里可以找到 Ken Auer 推广的 Enabler 模式的更多详细信息?