主だったところをメモ代わりに。
クラス、モジュール
クラス名、モジュール名は原則CamelCase。各単語の最初の文字は大文字、それ以外は小文字にする。_は使わない。
OK:
GroupsColorBarCoinServer
NG
GROUPSCOLORBarCoin_Server
ただし、略字は大文字のままにする(場合もある)。
OK:
HTMLBuilderSMTPServer
クラスやモジュールはネストできる。ネストした場合も命名規則は同様。
OK:
MenuWindow::ColorHogeService::Item
メソッド
メソッド名は小文字で_区切り(いわゆるsnake_case)。
OK:
find_itemsall_children
NG:
findItemsfind_ItemsFindItemsFind
いわゆるアクセサにはgetやsetはつけない。値を読む時にはその単語名を、
値を書く時にはその単語名+=にする。
OK:
name-
name=(other)## これは実際のコード中ではfoo.name = otherという形で使われる family_namefamily_name=(other)
NG:
get_nameset_name(other)getNamesetFamilyName(other)
真偽値を返すメソッドには?をつける。isやhasを頭につけたり、pを最後につけたりはしない。
OK:
user?permitted?clicked?
NG:
is_useris_user?user_pis_clicked
変数
命名ルール自体は基本的にメソッド名と同じ。ぱっと見ではメソッドと区別がつかない場合もある。
OK:
namescart_item-
order_id-
order_idをoidのように省略しすぎるのは非推奨。とはいえ例えばPostgreSQLのOIDはoidとしても構わない。
-
NG:
cartItemorder_Id
例外的に短い名前が使われるものもあるが、あくまで例外で、どちらかと言うと長めの命名の方が多い。
OK:
-
i,j- ループカウンタやインデックス用。
books.each_with_index{|item, i| ... }などのように使う。
- ループカウンタやインデックス用。
-
x,y,z- 座標用。
定数
定数は全部大文字で_区切り。
OK:
FIGURE_X_SIZEMAX_WIDTH
NG:
Figure_X_SizeMaxWidth