Ruby

Ruby 命名規則まとめ

More than 1 year has passed since last update.

別言語からRubyに来た人にとって、最初に引っかかるポイントである言語の慣用について、今回はRubyらしくあるために、Rubyの命名規則をまとめてみました。

クラス名、モジュール名

キャメルケース(CamelCase):各単語の頭文字を大文字にする、_は使用しない。
ただし、HTMLFTPなどの略語はすべて大文字にします。

# NG
Foo_Class
barmodule
bazClass
ApiServer

# OK
FooClass
BarModule
BazClass
APIServer

ファイル名、ディレクトリ名

スネークケース(snake_cace):すべてを小文字にし、単語の区切りを_で繋ぐ

そして、ファイル名にはクラス名やモジュール名をスネークケースに変更した名前を使用し、ディレクトリ名にはモジュールの名前空間をスネークケースに変更した名前を使用します。

class FooClass
end

# ファイル名はスネークケース 
foo_class.rb
module HogeHoge
  module Foo
    class Bar
    end
  end
end

# ディレクトリ構造は名前空間と対応させる
hoge_hoge/foo/bar.rb

メソッド名、変数名

スネークケース(snake_cace):すべてを小文字にし、単語の区切りを_で繋ぐ

# NG
Foomethod
barMethod

# OK
foo_method
bar_method

定数名

スクリーミングスネークケース(SCREAMING_SNAKE_CASE):すべてを大文字にし、単語の区切りを_で繋ぐ

# NG
Max_Size

# OK
MAX_SIZE

返り値が真偽値のメソッド

真偽を返すメソッドであれば最後に?を付与します。冗長になるためメソッドの先頭にisdoes、またcanなどの助動詞を置かないようにします。

# NG
class MotocrossGP
  def is_fast_rider?
    true
  end
end

# OK
class MotocrossGP
  def fast_rider?
    true
  end
end

破壊的なメソッド

selfや引数を変更するようなメソッドは最後に!を付与します。また可能であれば破壊的メソッドに対応する非破壊的なメソッドも用意します。

# NG
def update!
end

# OK
def update # 可能であれば非破壊的なメソッドも用意する
end

def update!
end

参考

https://shugo.net/ruby-codeconv/codeconv.html
https://techracho.bpsinc.jp/hachi8833/2017_02_13/35364