论坛首页 入门技术论坛

Rails命名约定之—— 混合大小写,下划线和复数

浏览 3363 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-14  

  我们经常使用短语来命名变量和类。在Ruby里通常约定变量的名字全是小字母,单词之间用下划线隔开。类和模块命名则不同:它们没有下划线,短语中采用混合大小写模式——即每个单词的第一个字母以大写开头。这些约定会这样命名变量,比如order_status,和类名字如LineItem。
  

  Rails中采用了这种命名约定并以两种方式进行了扩展。
    

  首先,它假定数据库的表名和变量名一样,都是小写字母,单词之间是下划线。Rails还假定表名总是复数形式。
    

  另一方面,Rails假定文件以带有下划线的小写字母命名。
Rails使用这些命名约定来自动转换名字。例如,你的应用程序可能包含一个model类,它用来处理商品项目。你已经使用Ruby的命名约定来定义这个类,叫LineItem。通过这个名字,Rails将自动推论出以下的规则:

  
1、对应的数据库表名被称为line_items。这是类名字,被转换成小写字母,并在单词和复数之间使用了下划线。
2、Rails也将知道从一个叫line_item.rb(在app/models目录中)的文件中去寻找类LineItem的定义。
Rails的controller也有额外的命名约定。如果我们的应用程序有一个名为store的controller类,那么会发生以下一些情形:
1、Rails假定类被称为Store的Controller类,并且它是定义在app/controllers目录下store_controller.rb的文件中。
2、它也假设有一个helper模块,它是位于app/helpers目录下的store_helper.rb中。
3、它缺省地接受负责输出的views中的layout 模板存放在目录app/views/layouts/下的store.rhtml或者store.rxml中。
还有些要注意的。


  通常情况下,当你第一次引用Rails不知道的类或模块时,Rails使用命名约定来转换类名字为文件名,并试图在后台加载这个文件。这样的好处是不言而喻的,你可以直接引用model类名,这个model将自动加载到你的应用程序中。
正如你所看到的,这种模式在你的类被存储到sessions中时会行不通。因此你必须要明确地声明。即使这样,你也不必使用require。相反,你的控制器只要包含一行,像这样:


class StoreController < ApplicationController
 model :line_item
 # ...

  注意这里的命名约定是如何做到一致的。“:line_time”是带有下划线的小写,它将会把line_item.rb加载进来,这个文件包含类LineItem。

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics