Help us understand the problem. What is going on with this article?

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした