我参加了一些课程,并了解了YAGNI的目的。但是,这个原则作为一个整体从来没有与我好好相处。它引入了一个逻辑悖论。
作为一个假设,您正在设计一个您打算向前扩展的框架。 YAGNI(可能还有TDD)会鼓励您专注于 now 。使其适用于您可预见的硬件。毕竟,对未来的要求是模糊的,以及将来。
但是,这固有地限制了您的框架的可行性。在这个假设中,你有先见之明,知道未来将会发生什么。您可能值得花些时间做一些原型设计并提前工作,因为它知道它可以很好地帮助您顺利完成。毕竟,框架的本质是促进跨环境的某些功能 - 那么如何设计框架和严格遵守YAGNI原则?
我不确定我是否要求具体使用"如何使用YAGNI" - 我认为它可能比这更具哲学性。我可能只是要求更多经验丰富的行业开发人员,其中YAGNI,对立原则和最佳实践之间的界限。 YAGNI是强制执行的吗?它甚至被视为?或者这只是我们学校教给我们的东西,因为它在我们的书中?
感谢。
答案 0 :(得分:1)
由于多种原因,YAGNI是大型应用程序实际开发和维护的重要原则。这是最引人注目的:
技术复杂性 在处理工业级代码库时,经验丰富的开发人员非常不愿意接受系统中的技术复杂性。在您需要之前,您不应该开始支付额外技术复杂性的隐含开销。
要求回归 您可能认为您对系统的未来需求有一个清晰的认识,但您可能错了。统计数据显示,产品所有者所描述的所有功能中有35%必须具有“'项目从未实施过。试图预测未来的需求并做一些新的技术工作会导致浪费精力。
QA FEEDBACK LOOP 无论何时在非平凡的技术系统上进行任何开发,都会出现错误。这是不可避免的。根据一些研究,在创建当天和一年之后发现一个错误会使开发成本产生差异100倍。现在输入的代码不能通过与UI的交互来执行,以防我们以后需要它们'是一个缺乏经验的开发人员的标志。
总之,最好的代码基本上始终坚持YAGNI原则,最好的敏捷团队就是为此而努力的。如果你表现出先见之明,你可能会认为你正在使你的代码更容易使用,更灵活等等,但这几乎不是这种情况。代码是最简单易用的,所以请保持这种状态。