【发布时间】:2015-06-19 13:40:41
【问题描述】:
我参加了一些课程并了解了 YAGNI 的用途。但是,这个原则作为一个整体从来没有让我满意。它引入了一个逻辑悖论。
假设您正在设计一个打算向前扩展的框架。 YAGNI(可能还有 TDD)会鼓励你关注现在。让它适用于您可预见的硬件。毕竟,对未来的要求是模糊的,而且是在未来。
但是,这从本质上限制了框架的可行性。在这个假设中,你有先见之明,知道未来会怎样。做一些原型设计和提前工作可能值得你花时间,因为知道它可以很好地帮助你。毕竟,框架的本质是促进跨环境的某些功能 - 那么您如何设计框架并严格遵守 YAGNI 原则?
我不确定我是否要求提供关于“如何使用 YAGNI”的具体内容——我知道它可能比这更富有哲理。我可能只是在询问业内经验丰富的开发人员,YAGNI、对立原则和最佳实践之间的界限在哪里。 YAGNI 是否被强制执行?它甚至被视为?或者这只是我们的学校教给我们的东西,因为它在我们的书中?
谢谢。
【问题讨论】:
-
有远见 - 为您在合理的时间范围内需要的东西进行设计,还有 YAGNI - 你有一天可能需要的东西, 也许。没有界限,但是尝试为您可能遇到的每个问题设计一个无限可扩展的通用解决方案会导致成堆的代码永远无法交付。所以,是的,请提前考虑,但用户手中的可用软件对他们来说比未来某个日期的优雅解决方案更有价值。软件设计艺术的一部分是在交付和 YAGNI 之间找到平衡。
-
这个问题不适合SO,你可以试试programmers.stackexchange.com
-
@HenriqueBarcelos 在推荐其他网站时,指出cross-posting is frowned upon 通常会有所帮助
-
@gnat 因为我不知道 SE 中有任何迁移工具,这个问题可能会被关闭,OP 还有什么其他选择?
-
@HenriqueBarcelos 原站自删
标签: design-patterns methodology yagni