YAGNI原则是什么? -oliverkumper


YAGNI 是You Ain't Gonna Need It(你不会需要它)的简写,是极限编程的关键原则。
YAGNI意思非常简单:仅在您真正需要它们时才去做,而不是在您认为或预见将来可能需要它们时就提前做了!
您可以将YAGNI视为即时制造的拥护者。在这种情况下,制造业正在编写代码并交付功能。只有当有人真的需求功能存在时,您才可以开始工作并创建它。否则,您将保持自己的懒惰!
它为什么如此重要?没有编写的每一行代码都是时间,因此可以节省金钱。但是,甚至更多!它是:

  • -更少的代码维护
  • -更少的代码测试
  • -事情发生变化时更少的代码可重构
  • -更多时间用于更重要的功能
  • -更多时间用于文档编制

而且还包括:
  • -节省了编译/移植的时间
  • -节省了测试运行的时间
  • -生成时/运行时节省了资源
  • -不必以某种方式保留的知识

它可以防止什么?如今,大多数软件开发都是根据客户的需求进行的。无论您是在产品公司,在提供开发服务的公司还是在其他地方工作。
总是会在某处某人想要具有某个功能。
是您的客户要求具有某个需求的功能,还是产品经理响应客户的反馈的功能。无论实际驱动者是谁,无论是早晚,这都是实际需求的体现。
您正确预见未来功能请求的机会非常低。因此,您很有可能实现某些功能,而不是您的实际利益相关者想要的功能。这就像玩彩票!
过早地执行某些操作很可能会导致一切都被丢弃。这是一个没人真正喜欢的场景!然后,有时会发生另一种情况:没有人真正需要该功能!
 
评论:
YAGNI就是为什么要在开始编写任何代码之前先确定需求的原因。用户的需求很高,但是还有一些技术需求必须弄清楚,这样才不会最终实现不必要的东西。
 
YAGNI是许多原则的核心。例如,开放-封闭原则。您可以设计所有可能的抽象,以便在发生更改时,可以通过添加代码而不是对其进行修改来应用它们。但这是不可能的。您无法预见所有潜在的变化。
 
banq评:防止使用YAGNI导致技术债务,技术债务是因为你没有真正理解业务功能导致的,而YAGNI可能会影响你没有去深入理解业务功能,当然理解业务功能不是预测业务功能。YAGNI虽然可以防止过度设计,也会导致设计不足。
 
技术债务是对业务功能缺乏真正的理解