2013-04-24 24 views
2

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

+0

不是给定发电机的大粉丝。我唯一经常使用的就是'轨道g迁移'。这实际上是个人喜好的事情 - 但我倾向于写出我需要的其他东西,因为我需要它们。 – nzifnab 2013-04-25 00:08:53

回答

1

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

1

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

请注意,您应该使用脚手架来创建将在控制器中执行操作的模型。例如,如果您的型号不应该有各自的控制器,您想要generate model而不是generate scaffold,或者如果某个表格根本不需要某个型号,则可以使用generate migration,或者对于没有控制器的控制器型号,generate controller等。

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

  • 在您输入(YGNI)
  • 测试文件(YGNI)
  • 的CRUD操作(也许YAGNI控制项的属性迁移,你可以简单的删除你不”的方法(无论如何应该比自己输入整个文件要容易)
  • 在控制器中生成的操作的视图(再次删除那些你不需要的视图)
  • CSS文件(这是一个必须删除或编辑,如果你打算转移到生产)