【问题标题】:Does Ruby on Rails Encourage One to Violate YAGNI?Ruby on Rails 会鼓励违反 YAGNI 吗?
【发布时间】:2013-04-24 23:18:06
【问题描述】:

我正在学习 Ruby 和 Rails,我计划通过 rspec 使用 TDD 编写我的第一个应用程序。但现在我发现我的原则与大多数 Rails 社区的运作方式之间存在一些摩擦。我看到的大多数示例和教程都在告诉我生成我的代码。我什至可以在一个命令中为我的对象生成脚手架以及 rspec 规范。虽然这真的很光滑,但感觉不太对劲。如果我生成了一堆我现在实际上不需要的属性和方法,那就违反了 YAGNI,对吧?

【问题讨论】:

  • 不是给定生成器的忠实粉丝。我唯一经常使用的是rails g migration。这真的是个人喜好 - 但我倾向于为其他人写我需要的东西,因为我需要它们。

标签: ruby-on-rails ruby-on-rails-3 rspec rspec-rails


【解决方案1】:

脚手架是快速原型制作的有用工具,但实际上很少用于生产应用程序。此外,为 CRUD 资源搭建脚手架并不会产生很多“额外的东西”。但归根结底,这只是一种偏好和合适的东西。如果您可以生成一个脚手架并对其进行修改以适合您的应用程序,并且可以节省您的时间,那就去做吧。但是一般来说,一旦您对框架的细微差别有了更多了解,您会发现自己创建文件会更容易。但总的来说,我并不认为脚手架过多地违反了 YAGNI。

【讨论】:

    【解决方案2】:

    如果你生成了很多你必须删除的东西,也许你只是使用了错误的生成器?

    请注意,您应该使用脚手架来创建一个模型,该模型也将在控制器中具有操作。还有其他生成器,例如,如果您的模型根本不应该有相应的控制器,您需要generate model,而不是generate scaffold,或者如果表格根本不需要模型,您可以使用generate migration ,或者对于没有模型的控制器,generate controller 等等。

    所以假设您在正确的地方使用脚手架,即创建需要控制器的模型。脚手架实际生成

    • 使用输入 (YGNI) 中的属性进行迁移
    • 测试文件 (YGNI)
    • crud 操作的控制器条目(可能是 YAGNI;您可以简单地删除文件不需要的方法。无论如何应该比自己键入整个文件更容易)
    • 它在控制器中生成的操作的视图(同样,删除您不需要的操作)
    • CSS 文件(如果您打算转为生产环境,则必须始终删除或编辑此文件)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 2011-07-19
      • 2017-08-13
      • 2019-02-07
      相关资源
      最近更新 更多