在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
翻译:itachi007
附件为最终修订版下载.
修订者:drive2me http://rc.org.cn/?uid/172
前言
本规约、记述的是在用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的风格来注释。
例:
# コンマ区切の文字列+str+を分割し、結果を配列にして返す。
def split_csv(str)
return str.split(/,/)
end
程序结构相关的规约
类的构成要素以下记的顺序来记述。
在属性方法的定义中,使用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的括号可以省略。
例:
def add(x, y)
return x + y
end
误例:
def add(x, y)
x + y
end
def add(x, y)
return(x + y)
end
yield的调用方法遵照方法的调用规则。
If语句的then可以省略。另外、如果是if !x的时候、 请用unless x来置换。但是,unless的时候、 不使用else。还有,非常简单的条件,一行能够写下来的时候,直接使用if/while也可。
正例:
if x > 0
puts "x > 0"
else
puts "x <= 0"
end
unless x
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论