编码风格——Rails在生成控制器、模型和视图方面的良好实践



在rails中,创建模型、控制器和视图的最佳实践是什么?我知道有三种方式。

1( 脚手架"一切"。

2( 通过终端生成每个控制器和模型。

3( 手动创建所有文件。(做这件事时需要小心。我必须记住控制器的复数化和在模型中使用单数(

目前,我遵循第三种方法,尽管它涉及到一点风险。我只想知道最好的做法是什么。如果还有其他办法的话,我很乐意知道。谢谢你抽出时间。

第页。S:我是RoR的初学者。

我认为脚手架相当糟糕,因为它会产生很多你可能不想要的东西,我只将其用于尖峰解决方案。

在实际的项目中,我的公司规则手册说我必须使用测试驱动开发(我确实喜欢(。这意味着在默认的方法中(有时我无法遵循(,我从集成测试开始,然后从它开始。您只需一个rails g scaffold myscaffold就可以获得您的模型、控制器、视图和迁移,这就是为什么我们将ruby on rails称为敏捷web开发解决方案的原因。因此,支持开发人员快速引导软件或快速更改功能的工具可以帮助您实现敏捷。

另一件事是,如果你可以快速启动一个项目,你可能会对优先级的重新排序做出更灵活的反应。这将有助于您在一种更清晰、更好的方式。

没有完美的解决方案。如果您手工编写代码,那么您真的在使用惯用rails吗?对于"中级"程序员来说,他们既不想手工编写所有代码,也不能依赖简单的脚手架。你必须理解生成的代码,但把60 wpm的完美代码从头开始留给大师们!

我建议三个语用学

A。有个好的开始。Boilerplating是在Javascript和Node项目中实现这一点的主要方法,在这些项目中,您可以选择所需的模块(针对auth的design、针对ajaxy表单的simple_form、twitter引导程序等(,然后从一个加载良好的站点开始,而不是将其逐段固定。这并不重-只是为了制作"PRO"网站。我仍然在寻找好的RoR锅炉板、railsapp(composer是姐妹网站(和railsbrick,以及好的旧Rails模板,Rails引擎应该允许你这样做。遗憾的是,对如何做到这一点的报道不够,因为它需要"大师"提供包含最佳实践的测试配置。

B。模型至上的方法。从第一天起就从一个像样的模特开始。与其一个接一个地添加字段,不如坐下来,试着为你的网站找到3-4个核心表,并解决它们的关系。"敏捷"的人可能会反对极简主义方法,但如果你有经验,为什么不"提前一点设计"呢。当然,在编码之前,你要避免10张表或ER图的另一个极端!如果你有不错的实物模型/用户设计,你可以为你的MVP(最低可行的产品(提前很好地规划网站和固有模型的外观。当然,这表明你对你想要的应用程序有2-4周的远见:(

C。无测试/迁移脚手架。混合方法更实用,您首先单独进行模型生成和任何数据迁移,然后在没有测试的情况下进行脚手架或使用选项进行迁移。您可以在Rails4forBeginners的ch5一书中看到这方面的例子。好处是,你不会覆盖手工制作的模型代码,让脚手架处理RoR魔术给你的每个模型大约5个以上文件的肮脏细节。#1。生成具有标题、正文的示范文章#do rake db:创建,手动添加验证,例如存在,最小长度等到模型#你可以在这里搭脚手架。。#现在通过数据库迁移ONLY添加位置和摘录(不是手动模式编辑也不是scaffold all($rails生成迁移add_except_and_location_to_articles摘录:字符串位置:字符串#现在重写SCAFFOLD,但不重写模型。。$rails g scaffold文章标题:字符串位置:字符串摘录:字符串body:text published_at:datetime--跳过迁移

如果你明白了这一点,你可以看到,随着你的模型的发展,脚手架被视为抛弃。此时,您真的不在乎覆盖控制器详细信息或视图。但你在保护你的模型,手工编辑,例如模型之间的关系,以及详细的验证。

作为一个附带的好处,模式优先的实用主义与这种方法配合得很好。在你停止搭建脚手架之前,你可以在你的应用程序中获得5-20个模型。到那时,您的代码模型应该已经相当确定了。

最新更新