为什么模型的命名约定与控制器,帮助器等不同?

时间:2015-12-22 13:38:17

标签: ruby-on-rails ruby

我正在尝试自己构建基于机架的Web框架,当我参考Ruby on Rails的设计时我感到困惑。

  1. 为什么Rails中的模型应该像User而不是UserModel一样命名,就像控制器或帮助器一样(例如,UsersControllerPostsHelper)?
  2. 如果模型的命名惯例是好的,为什么不是控制器或帮助者遵循相同的规则? ControllerHelper后缀有点乏味。
  3. 命名一切都好吗?例如:Controller::UserModel::User
  4. 是否有任何好的参考书/书籍谈论软件的文件结构?

2 个答案:

答案 0 :(得分:4)

我认为这是为了方便起见。您永远不会在代码中引用控制器和辅助类,而您始终引用模型类。如果他们被称为UserModel,你会有很多代码,如

user = UserModel.first
post = PostModel.first

这有两个问题:它打破了“在类之后调用实例变量名称”的惯例,这是一个简单的自我记录,而且它很麻烦,有很多重复的信息。

此外,User类实际上代表了一个真实的用户,而UserController类并不代表现实世界中的任何东西,它只是机器的一部分,如果你知道我的意思。

编辑 - 更多答案:

3)命名空间应保留给站点的不同部分,例如管理部分:您可以拥有一个继承自ApplicationController的AdminController,并添加更多位(例如before_filter,用于检查当前是否存在用户和他们是管理员),然后您的其他管理部门控制器继承自AdminController。路线中的命名空间可以轻松管理。

4)至于书籍,请阅读:http://www.amazon.co.uk/Agile-Development-Rails-Pragmatic-Programmers/dp/1937785564/ref=sr_1_1?s=books&ie=UTF8&qid=1450792683&sr=1-1&keywords=hansson+rails

它有一些“在15分钟内创建一个博客”类型的东西,我实际上建议不要潜入,直到你理解底层架构,这在本书的其他地方有很好的解释。太多人在没有理解他们正在做什么的情况下潜入Rails(他们不幸的问题填补了这个论坛)。

答案 1 :(得分:2)

所有关于惯例,都必须做出决定。我不会说铁轨核心,但这是我的想法。

模型 - 在大多数情况下,这是某个事物的单个实例的表示。虽然你可能遇到不是这种情况的情况,但它有助于我概念化它的奇点。即我正在与用户而不是用户打交道

Controller / Helpers / Tablenames - 在数据库中,User模型映射到users表。控制器和帮助程序遵循相同的数据库约定。

命名空间很好,但是只有在明确边界上有意义时才应命名。

一个伟大的ruby框架来看看它不是rails是Lotus - http://lotusrb.org/它大量使用命名空间。