GitHub的Ruby代码规范

转载自:http://ningandjiao.iteye.com/blog/1477792  

最近开始接触Ruby和Rails的开发,个人是一个疯狂迷恋编写代码边format的编写方式,看到摆的凌乱的代码就会有一种无法言说的焦躁感,同样的习惯被我带到了Ruby的学习过程中,可是应该如何确定Ruby源文件的format呢? GitHub公布了他们的答案: 


Ruby Style Guide: https://github.com/bbatsov/ruby-style-guide 

源代码布局方面:
 
1、所有源文件以UTF-8编码 
2、使用2个空格的缩进 
3、使用Unix风格的换行符(\n),windows(\r\n)。可使用git config --global core.autocrlf true 防止产生windows风格的换行符。 
4、在‘,’,‘;’后,操作符(除指数操作之外),‘{’,‘}’的前后增加空格,增加代码的可读性。 
5、在‘(’,‘)’,‘[’,‘]’符号后不要加空格。 
6、Case和When处于同一代码层次。 
7、2个def之间使用一个空行隔开 
8、对于一个方法有多个参数导致太长的时候,按如下方式处理
Ruby代码   收藏代码
  1. def send_mail(source)  
  2.   Mailer.deliver(to: 'bob@example.com',  
  3.                  from: 'us@example.com',  
  4.                  subject: 'Important message',  
  5.                  body: source.text)  
  6. end  

9、使用Rdoc生产系统的API文档,在注释和def之间不要有空行。 
10、每行不超过80行 
11、每行的结尾不要有空白字符。 

语法方面:
 
1、一个方法如果没参数就省略括号,有参数就使用括号 
2、如无必要,不要使用for,而使用each做循环 
3、不要使用then 
4、使用三元操作?:代替if,else。 
5、不要在if else的内部使用?:操作符 
6、使用when X then ...,因为when x ....在ruby1.9被删除了 
7、使用&&和||做boolean操作,使用and,or做流程控制。 
8、unless和else不要一起用 
9、除非是判断条件涉及赋值操作,否则不不需要括起来 
10、把多行语句块使用{}包含, 
11、不需要使用的return的时候就不要用 
12、不要使用‘\'连接2行代码 
13、使用||=来初始话变量,但是不能用来初始化boolean变量 
14、不要使用perl风格的变量名,$1-9之类的 
15、运行Ruby的时候,加上“-w”以提示我们代码中不好的地方 
16、使用Ruby1.9的语法写lambda和hash 

命名规范: 
1、使用小写+“_"命名变量和方法 
2、使用首字母大写命名Module和Class 
3、使用全大写+”_"命名常量 
4、对于返回值是boolean的方法加个“?”后缀 
5、对于一些有潜在风险的方法加“!”后缀,比方说有exit,修改了self,或者变量等等 

注释:
 
1、关于注释就一条,代码即注释, 

类:  
1、符合liskov原则,子类可以替换父类。 
2、尽量让类做到SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion) 
3、为每个类都写一个to_s的方法以查看类的状态。 
4、使用attr家族的方法做类属性的访问控制 
5、考虑增加新的工厂方法做一些有意义的实例初始化工作。 
6、使用DuckTyping而非继承。因为动态语言的特性,不在需要多态了。 
7、避免使用@@,全局变量, 
8、根据访问情况,合理使用访问控制符。 
9、使用self来定义单例方法,而不是使用类名。 

异常:  
1、不要放过一些异常 
2、不要使用异常做流程控制 
3、不要捕获Exception,异常基类。 
4、根据异常类型的覆盖面排列异常 
5、把所有的外部资源放到异常捕获模块中 
6、优先使用库自带的异常,而不是自己创建异常 

集合:  
1、优先使用%w创建字符串数组 
2、按需创建数组 
3、使用Set去除List中的重复元素 
4、使用Symbol做Hash key,而不是String,不要使用可变对象做Hash Key。 
5、不要在遍历一个列表的同时,又在改变它。 

Strings:  
1、使用“#{String} #{string}”优于String+String 
2、未使用#{}形式的String时,使用‘’表示 
3、在做实例变量的连接时,不要使用{} 
4、使用<<而不是+做字符串串联 

正则表达式:  
1、使用命名组而非$1-9以便于跟踪。 
2、‘^','$'表示匹配整行,匹配整个字符串应使用'\A','\Z' 
3、使用’x'修饰符修饰复杂的regex语句,增加可读性,但是注意空格的去除问题 

%的语法:  
1、多使用%w 
2、需要字符串内嵌表达式的时候使用%() 
3、使用%r当正则表达式中出现多个/ 
4、不要使用%q ,%Q,%x,%W,%s这些字符 
5、在%后优先使用()作为分隔符 

后面还有关于元编程,MISC的写法指导,因目前还不了解其中的机制,无法理解,后续再补上 

元编程:
 

MISC:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值