为什么模型被命名为"user.rb"而不是"user_model.rb"?



为什么控制器被命名为"users_controller "。和模型不命名为"user_model.rb"?

为什么有application_controller。但内部视图文件夹"布局"不命名为"应用程序"?

当命名支持开发人员对问题的内部模型时,代码从认为最好的地方流出。在构建应用程序时,我考虑的不是寻找用户模型(UserModel.find),而是寻找用户(User.find)。另一方面,控制器是web界面和数据存储(和业务逻辑)之间的转换层,所以用不同的名字称呼它们更有意义。

还有命名空间的问题;如果我的模型和控制器都命名为User,那么我在任何给定时刻指的是哪个用户?在这种情况下,要么你用它们的类型命名所有的东西,这就遇到了我上面描述的问题,要么一个"获胜",允许被引用为"裸"。这似乎是最有意义的模型会赢,以提供一个更好的心理映射。

里面的app/views/layoutapplication.html.erb,你可以有其他布局选择不同的控制器。

最后,然而,这些都是在Rails开发过程中做出的选择,它们完全是基于开发人员认为最有意义的风格选择,所以不幸的是,你的问题没有真正的"正确"答案。事实上,一些类似的决定已经被重新审视。(application_controller.rb以前只叫application.rb)

Ruby on Rails遵循"约定优于配置"的原则。特别是命名约定在映射路由到控制器,自动加载和重新加载类,为动作找到合适的模板和许多其他功能时被Rails广泛使用。

这个原则导致了一些限制,因为你不能轻易地打破一些惯例而不陷入麻烦。但另一方面,它使我们的生活更轻松,因为我们的配置量更少,并且可以轻松地从一个Rails项目转移到另一个项目,因为它们都具有相似的结构并遵循相同的约定。此外,我相信,这使得Rails核心开发变得更加容易,因为核心团队有很多关于如何使用Rails构建项目的信息,他们不必担心太多泛化问题。他们只是假设你遵守规则和惯例。

虽然,我怀疑许多命名约定背后有严肃的理由。我认为在某些时候,有人只是决定,如果它们都有Controller后缀,Rails将更容易处理您的控制器并将它们与其他类区分开来。这里我们把所有的控制器放在app/controllers目录下,后缀是。

最新更新