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