博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rails中的约定与命名规范
阅读量:7175 次
发布时间:2019-06-29

本文共 1607 字,大约阅读时间需要 5 分钟。

hot3.png

约定优于配置是Rails三大哲学之一。Rails中充满了很多约定,本页面对遇到的约定做一个总结。

单复数的约定

Model用单数因为它表示一个对象如User,

数据库表用复数因为它存放的是对象的集合,
Controller用复数因为它是对对象集合的操作

Routes.rb中定义session一般用resource :session,而不是普通的resources :sessions。因为一般只会操作当前用户的session,不会操作所有session,所以不能定义为复数。
即如果一个请求一个资源时不需要指定ID,就在routes中用单数,如/profile显示当前登录用户的信息,这样你可以使用单数的/profile而不是/profile/:id。
也可以用match “profile” => “users#show”

其它

Controller中可以用变量request,然后可以得到session, request_info, head, method等请求信息

.与#使用惯例:在阅读书时经常会遇到User.all, users#show这样的表示,其中的点.与井号#使用也是有约定的,点.用于调用类方法,井号#用于调用实例方法。

 

 

 

最重要的是要一致, 不要一会儿单数, 一会儿复数; 一会儿首字母小写, 一会儿首字母大写. 如果不能做到完全一致, 至少努力做大大部分情况下一致.

 

 

变量名的单复数和大小写问题

 

考虑下面三条命令:

  • rails generate model user name:string
  • rails generate controller user --no-test-framework
  • rails generate integration_test user

其中比较容我困惑的是user这个单词, 出现在不同的场合可能有下面四种情况:

  • user
  • users
  • User
  • Users

上面的情况在railstutorial这本教程里面出现了至少3种, 在阅读的时候给我造成了很大的困惑. 我想, 到底什么才是最为推荐的? 如果不按照教程上面的例子做会不会有什么问题?

 

实验的结论:

  • 首字母大小写是无关紧要的, 最终产生的结果是一致的.
  • model一般都用单数, 复数的model会有歧义, 比如当你创建model的一个实例的时候, 会觉得你在创建多个实例
  • 其它很多地方用复数形式, 比如数据表的名字, 比如routes中的url形式以及url的名称等等.
  • 既然很多地方都用复数, 那么不如统一用复数形式. 另外经过检验, 统一用单数的方式有点行不通, 到restful routes那块跟Rails现有的设计有冲突. 那么索性就统一用复数形式好了.

 

最终的解决方案: 

  • 大小写问题已经没有争议了, 都用小写即可
  • 单复数问题: model名字用单数, 其它场合都用复数

 

 

文件名的单复数问题

经过观察, rails所有的常见的文件名都是小写的. 所以大小写的问题没有争议, 都用小写即可.

但是单复数问题不太统一, 比如users_contoller.rb, model/user_spec.rb.

这边总结的规律是:

  • 跟model相关的东西, 单数居多. 比如model文件, model_spec文件等等
  • 跟controller相关的东西, 复数居多. 比如 users_contoller文件, request/users_spec文件等等.
  • 跟view相关的东西也是复数居多. 因为view的文件的创建是在创建contoller的时候自动创建的, 所以它跟contoller基本上是一致的.比如 javascripts/users.js.coffee
  • 其它场合应该是单复数都可以.

转载于:https://my.oschina.net/u/3544267/blog/1580386

你可能感兴趣的文章
npm常用命令
查看>>
String,StringBuffer和StringBuilder三者的讲解
查看>>
Understanding Digital Raw Capture
查看>>
(原創) unnamed object的多型只能使用reference (C/C++)
查看>>
10种有用的CSS技巧
查看>>
linux命令tree用法详解
查看>>
matlab练习程序(TV模型图像修复)
查看>>
用户接口(UI)设计的 20 条原则
查看>>
Windows Azure HandBook (3) 浅谈Azure安全性
查看>>
div+css布局入门
查看>>
Linux 下Apache和Resin的安装
查看>>
HDU 2710 Max Factorv (素数模板 & 多种解法)
查看>>
Linux 启动流程
查看>>
获得汉字字符串的首个拼音字母的缩写
查看>>
RegularExpressionValidator控件与常用验证正则表达式大全小结
查看>>
Zookeeper集群的安装和使用
查看>>
remobject 簡介
查看>>
一些Xcode快捷键,给新手
查看>>
DelayQueue在容错时的使用
查看>>
内联表达式
查看>>