Rubyコーディング規約まとめ

自分メモ。随時追記

 

2018/02/08

演算子の前後、コンマ、コロン、セミコロンの後ろにはスペースを入れる

sum = 1 + 2
a, b = 1, 2
1 > 2 ? true : false; puts 'Hi'
class FooError < StandardError; end

例外は、指数演算子

# 悪い例
e = M * c ** 2

# 良い例
e = M * c**2

 

 

 ・([の後ろ、])の前にはスペースなし。

  {の前後、}の前にはスペースあり。 [link]

# 良い例
some(arg).other
[1, 2, 3].each { |e| puts e }

 

 

・メソッドの引数に初期値を割り当てるとき、 =演算子の周りにはスペースを入れる。 [link]

# 良い例
def some_method(arg1 = :default, arg2 = nil, arg3 = [])
  # do something...
end

 

 

・可読性のため、大きな数値にはアンダースコアをつけましょう。 [link]

# 悪い例 - 0はいくつありますか?
num = 1000000

# 良い例 - 人の頭でもより簡単に解析できます
num = 1_000_000

 

 

・数値リテラル(数値や文字列を直接に記述した定数)のプレフィックス(接頭語)には、英小文字を使用する。

  8進数→0o

16進数→0x

  2進数→0b

10進数→0d [link]

# 悪い例
num = 01234
num = 0O1234
num = 0X12AB
num = 0B10101
num = 0D1234
num = 0d1234

# good - プレフィックスと数字の分離が容易
num = 0o1234
num = 0x12AB
num = 0b10101
num = 1234

 

 

・メソッド呼び出しの引数の周りに括弧を使用する。

 f((3 + 2) + 1)のようにメソッドの最初の引数が開き括弧で始まる場合は、 特に括弧を用いる。 [link]

# 悪い例
x = Math.sin y
array.delete e
temperance = Person.new 'Temperance', 30

# 良い例
x = Math.sin(y)
array.delete(e)
temperance = Person.new('Temperance', 30)

 

 

・オプション引数は引数リストの最後に定義する。

引数リストの先頭にあるメソッドを呼んだ場合、 Rubyの挙動が予測不能 [link]

# 悪い例
def some_method(a = 1, b = 2, c, d)
  puts "#{a}, #{b}, #{c}, #{d}"
end

some_method('w', 'x') # => '1, 2, w, x'
some_method('w', 'x', 'y') # => 'w, 2, x, y'
some_method('w', 'x', 'y', 'z') # => 'w, x, y, z'

# 良い例
def some_method(c, d, a = 1, b = 2)
  puts "#{a}, #{b}, #{c}, #{d}"
end

some_method('w', 'x') # => '1, 2, w, x'
some_method('w', 'x', 'y') # => 'y, 2, w, x'
some_method('w', 'x', 'y', 'z') # => 'y, z, w, x'

※オプション引数…メソッドの引数の括弧内で引数を定義するもの?