主だったところをメモ代わりに。
クラス、モジュール
クラス名、モジュール名は原則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
いわゆるアクセサにはget
やset
はつけない。値を読む時にはその単語名を、
値を書く時にはその単語名+=
にする。
OK:
name
-
name=(other)
## これは実際のコード中ではfoo.name = other
という形で使われる family_name
family_name=(other)
NG:
get_name
set_name(other)
getName
setFamilyName(other)
真偽値を返すメソッドには?
をつける。is
やhas
を頭につけたり、p
を最後につけたりはしない。
OK:
user?
permitted?
clicked?
NG:
is_user
is_user?
user_p
is_clicked
変数
命名ルール自体は基本的にメソッド名と同じ。ぱっと見ではメソッドと区別がつかない場合もある。
OK:
names
cart_item
-
order_id
-
order_id
をoid
のように省略しすぎるのは非推奨。とはいえ例えば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