`
ice-cream
  • 浏览: 322499 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Ruby编程规约(上)

阅读更多

这是我们开发团队的编码规范

 

Ruby编程规约(下)

 

本规约 记述的是在用 Ruby 进行编程时所使用的编程规约 在实际项目开发的时候,推荐以此为基础,根据项目实际情况进行客户化 (定制化) 后再使用。

源代码的整形

代码缩进

为了增加程序的可读性而进行的适当的缩进,缩进的幅度以 2 个字符为宜。另外,缩进的时候,只可使用空格,不可使用 TAB (编程工具不同的时候,看起来会不一样)

:

if x > 0

if y > 0

puts "x > 0 && y > 0"

end

end

一行的字符数

一行的字符数以 80 字符(半角)为宜

空行

用空行来区分开 多个 类。

:

class Foo

...

end

 

class Bar

...

end

误例 :

class Foo

...

end

class Bar

...

end

另外、类中的各个构成要素之间也需要用空行来隔开。 但是,最初的要素之前和最后的要素之后不需要插入空行。

:

class Foo

attr :bar

 

def baz

...

end

 

def quux

..

end

end

:

class Foo

 

attr :bar

 

def baz

...

end

 

def quux

...

end

 

end

注释

方法的定义中不需要注释行 ( 对那些认为 需要注释的代码进行重构。 )

但是,对类、模块、或公有方法的 说明 ,要使用 RDoc 的风格来 描述

:

# 分割用逗号区分的字符串,把结果返回给数组。

def split_csv(str)

return str.split(/,/)

end

程序结构相关的规约

类的构成要素

类的构成要素以下记的顺序来记述。

  1. 模块的包含

  2. 常数的定义

  3. 类变量、类实例 变量 的定义

  4. 公有 方法的定义

  5. accessor 的定义

  6. initialize 的定义

  7. 公有实例方法的定义

  8. 保护类方法的定义

  9. 保护 accessor 定义

  10. 保护实例方法的定义

  11. 私有类方法的定义

  12. 私有 accessor 的定义

  13. 私有实例方法的定义

  14. 嵌套类的定义

accessor 的定义

accessor 的定义中,使用 attr_accessor attr_reader attr_writer ( 不使用 attr )

方法的定义

方法的定义中,形参要用括号括起来。但是 没有参数的时候,括号可以省略。

:

def foo(x, y)

...

end

 

def foo

...

end

:

def foo x, y

...

end

 

def foo()

...

end

类方法的定义

类方法的定义的时候要使用 self

:

class Foo

def self.foo

...

end

end

:

class Foo

def Foo.foo

...

end

end

方法调用

调用某个方法的时候,参数要用括号括起来 但是,没有参数的时候,括号可以省略。 另外, print puts p 的时候,也可已省略参数

:

foo(1, "abc")

obj.foo(1, "abc")

bar

print "x = ", x, "\n"

:

foo 1, "abc"

obj.foo 1, "abc"

bar()

代码块

一个代码块基本上使用 do ... end 来包括起来

:

foo(x, y) do

...

end

 

x = bar(y, z) do

...

end

:

foo(x, y) {

...

}

 

x = bar(y, z) {

...

}

但是, 使用 方法链的时候,用 { ... } 来包括起来。

:

s = ary.collect { |i| i.to_s }.join(",")

:

s = ary.collect do |i| i.to_s end.join(",")

return

方法有返回值的时候 必须使用 return 来明示 另外 return 的括号可以省略。

:

def add(x, y)

return x + y

end

:

def add(x, y)

x + y

end

 

def add(x, y)

return(x + y)

end

yield

yield 的调用方法遵照方法的调用规则

条件分支

If 语句的 then 可以省略 另外 如果是 if !x 的时候 请用 unless x 来置换。 但是, unless 的时候 不使用 else 还有,非常简单的条件,一行能够写下来的时候, 也可 使用 if / while

:

if x > 0

puts "x > 0"

else

puts "x <= 0"

end

 

unless x

puts "x is false"

end

 

puts "x is true" if x

:

if x > 0 then

puts "x > 0"

end

 

unless x

puts "x is false"

else

puts "x is true"

end

 

puts "foo && bar && baz && quux" if foo &&

bar && baz && quux

能使用 case 使用 case 另外, 省略 then

:

case x

when 1

...

when 2

...

end

:

if x == 1

...

elsif x == 2

...

end

 

case x

when 1 then

...

when 2 then

...

end

不要使用条件分支表达式的值

:

if x > 0

msg = "x > 0"

else

msg = "x <= 0"

end

:

msg = if x > 0

"x > 0"

else

"x <= 0"

end

循环

省略 While 语句 do 另外 while !x 的时候 使用 until x

:

while cond

...

end

 

until cond

...

end

:

while cond do

...

end

另外 无限循环的时候,使用 loop

:

loop do

...

end

:

while true

...

end

逻辑运算符

逻辑运算中,使用 ! && || ( 不使用 not / and / or )

三项运算符

除非有明确的可读性,尽量不要使用三项运算符 特别是 括号等必要的条件复杂的时候 跨行的时候 不使用三项运算符

字符串

字符串基本上使用 "..." 的形式 但是, 只有在不想解释特殊文字的时候 ,使用 '...' 的形式 另外 原则上不使用“ here document

Ruby编程规约(下)

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics