也不知道算不算翻译,我也不懂日语,看代码瞎猜的,随后会附上完整的翻译,朋友已经帮忙翻译去了。哈哈
原文地址: [url]http://shugo.net/ruby-codeconv/codeconv.html[/url]
一。缩进
缩进应该是2个字符,这个是公认的。比如:
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
四。没个类中,第一行代码和最后一行代码不能和类声明,类结束符号(end)之间有空行。比如:
51cto这里显示有问题啊
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
 
省略一些看不懂的。
 
六。方法在有参数的时候要加上括号,虽然可省略。在没有参数的情况下,不加括号。比如:
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等场合可以省略):
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) {
  ...
}
 
十。块代码写在一行的时候应该用{},而不使用do...end。比如:
 
s = ary.collect { |i| i.to_s }.join(",")
 
错误示例:
s = ary.collect do |i| i.to_s end.join(",")
 
十一。returen的使用。在返回表达式的时候要用returen,return不加括号。比如:
def add(x, y)
  return x + y
end
 
错误示例:
def add(x, y)
  x + y
end
def add(x, y)
  return(x + y)
end
 
写到这,我才发现上篇blog里(TDD如何工作)的代码不规范啊。
 
十二。yield。这没例子,看不太懂。
十三。条件语句使用。看代码(条件简单的要用修饰句):
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 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
 
十六。循环语句使用,省略do。
while cond
  ...
end
until cond
  ...
end
错误示例:
while cond do
  ...
end
 
十七。无限循环的时候用loop..do
loop do
  ...
end
 
错误示例:
while true
  ...
end
 
还有一些命名规范。。以后再补充吧。。。
注:文中所说的“错误示例”,是指代码不规范,那种用法其实是可以用的。