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

Rubyの命名規約

More than 3 years have passed since last update.

主だったところをメモ代わりに。

クラス、モジュール

クラス名、モジュール名は原則CamelCase。各単語の最初の文字は大文字、それ以外は小文字にする。_は使わない。

OK:

  • Groups
  • ColorBar
  • CoinServer

NG

  • GROUPS
  • COLORBar
  • Coin_Server

ただし、略字は大文字のままにする(場合もある)。

OK:

  • HTMLBuilder
  • SMTPServer

クラスやモジュールはネストできる。ネストした場合も命名規則は同様。

OK:

  • MenuWindow::Color
  • HogeService::Item

メソッド

メソッド名は小文字で_区切り(いわゆるsnake_case)。

OK:

  • find_items
  • all_children

NG:

  • findItems
  • find_Items
  • FindItems
  • Find

いわゆるアクセサにはgetsetはつけない。値を読む時にはその単語名を、
値を書く時にはその単語名+=にする。

OK:

  • name
  • name=(other) ## これは実際のコード中では foo.name = other という形で使われる
  • family_name
  • family_name=(other)

NG:

  • get_name
  • set_name(other)
  • getName
  • setFamilyName(other)

真偽値を返すメソッドには?をつける。ishasを頭につけたり、pを最後につけたりはしない。

OK:

  • user?
  • permitted?
  • clicked?

NG:

  • is_user
  • is_user?
  • user_p
  • is_clicked

変数

命名ルール自体は基本的にメソッド名と同じ。ぱっと見ではメソッドと区別がつかない場合もある。

OK:

  • names
  • cart_item
  • order_id
    • order_idoidのように省略しすぎるのは非推奨。とはいえ例えばPostgreSQLのOIDはoidとしても構わない。

NG:

  • cartItem
  • order_Id

例外的に短い名前が使われるものもあるが、あくまで例外で、どちらかと言うと長めの命名の方が多い。

OK:

  • i, j
    • ループカウンタやインデックス用。 books.each_with_index{|item, i| ... } などのように使う。
  • x, y, z
    • 座標用。

定数

定数は全部大文字で_区切り。

OK:

  • FIGURE_X_SIZE
  • MAX_WIDTH

NG:

  • Figure_X_Size
  • MaxWidth

参考

takahashim
Rubyist. Founder and CEO of Tatsu-zine Publishing Inc.
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