代码之家  ›  专栏  ›  技术社区  ›  duong_dajgja

雅格尼原理应用于设计图案的意义是什么?

  •  0
  • duong_dajgja  · 技术社区  · 6 年前

    我最近读到了“头一设计模式”。这本书写得很好,值得一读。它通常从每一章开始,首先介绍一个问题和一个非常“幼稚”的问题解决方案。在下一页中,将提出更多的需求和约束,例如添加更多功能或更新行为。这本书再次提供了更新的“幼稚”方法。在某种程度上,当“幼稚”的方法把解决方案搞得一团糟(事情开始出错),这本书将读者推向一种全新的方法——目标设计模式。

    在其他地方,我学到了一个缩写为“yagni”的原理。 You Aren't Gonna Need It 声明“总是在你真正需要的时候实现,而不是在你预见到你需要的时候。”

    我现在想知道,“头先设计模式”是否以非理性的方式解释了“雅格尼”原则?因为,在某种程度上,给定一组需求,我们应该寻求最简单和最干净的问题解决方案,对吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   jaco0646    6 年前

    YAGNI + Design Patterns == Refactoring

    从设计模式的角度来看,它提倡对模式进行重构,而不是对模式进行设计。这一观点在这本书中得到了例证。 Refactoring to Patterns . 马丁·福勒在签署这本书时说,

    …大多数流行的四人帮图案…不需要预先设计,而是随着系统的发展而发展。

    这也是头一代设计模式所采用的方法,并且与Yagni完全一致。不要做大的前端设计来决定在哪里需要模式。相反,随着系统的发展,重构为模式。让这些模式随着时间的推移而出现。

    相关: What should come first -- the design pattern or the code?

        2
  •  1
  •   Maksym Fedorov    6 年前

    雅格尼原理不能说明简单的解决方案或干净的解决方案。 KISS 原理描述了这些因素。雅格尼原理的要点是避免开发未使用的功能。这个原则的主要目的是节省开发时间。

    例如,假设您应该将应用程序与外部API集成。为了实现这个目标,您开发了API的客户机组件。当然,您可以让客户端组件与外部API的所有功能一起工作。这样就可以制造出在未来许多不同应用中都能使用的通用组件。但是,您的应用程序可能不使用当前的每个API功能。这意味着这种方法有几个缺点:

    • 您将使用可能永远不会使用的功能
    • 您将把开发时间花在当前不提供业务价值的功能上。
    • 无法在实际使用中测试未使用的功能。

    在这种情况下,只使用功能的开发比完全功能的开发更加合理。雅格尼原理告诉我们。

    推荐文章