NameRules
Overview
コーディングに伴い命名規則について記載するセクション。
変数名の選択は一貫性と意図を伝えることが重要
変数名
大前提として良い変数は必要な上が含まれている
「名詞」なので、「名詞のみ」もしくは「形容詞 + 名詞」でつけます
codicで検索をかけるのもいい 変数名や関数名のネーミングに迷った際の便利なカンニングペーパーまとめ
良い変数名をつけるメリット
- むだなコメントが減る(変数名を見れば目的がわかるためコメントで追記する必要がない)
- 他の開発者にとって読みやすい
以下を考えながら変数名は付けていく
- 広く意味を持つ名前をつけない
- 多少長くなっても必要な情報は必ず入れる
- boolean型 is ... 状態を表す(isActiveとか) has ... 所有を表す(hasFileとか) can ... 可能を表す(canGetとか) should ... すべきかどうか(shouldChangeとか)
クラス名
クラス名は名詞で命名する。
OKな例(名詞)
- User(ユーザー)
- Order(注文)
- ProductRepository(商品リポジトリ)
- OctokitBranchManager(Octokitのブランチを管理するクラス)
NGな例(動詞になってる)
- ManageUser(“ユーザーを管理する” → 動詞っぽい)
- FetchData(“データを取得する” → 動詞っぽい)
クラスは「モノ」や「概念」を表すので、名詞を使うのが一般的。
クラス名には動詞を含んではいけない。
メソッド名で振る舞いを表現する。
関数名
一般的に関数名はその機能や動作を表す動詞で始めるのが良いプラクティス。
これは、とくに命令型プログラミングやオブジェクト指向プログラミングにおいて、関数(またはメソッド)が何らかのアクションを実行することを示すため。
関数名は何かを処理する動作を表しているはずのため動詞のみもしくは動詞 + 名詞のように同士から始まる。
ただし、userAccountExists のような関数名は、ブーリアン値(true/false)を返す「述語関数」(predicate function)の命名規則にしたがっている。
述語関数は、ある条件が真か偽かを判定し、その結果をブーリアン値で返す関数です。この種の関数は、しばしば「is」、「has」、「can」などの単語で始まるか、または質問形式の文で命名されます。
メソッド名は基本的に「動詞 + 名詞」
メソッドは「何かをする」ものだから、動詞を先頭にするのが一般的。
OKな例(動詞 + 名詞)
- getUser()(ユーザーを取得する)
- updateProfile()(プロフィールを更新する)
- fetchData()(データを取得する)
- deleteBranch()(ブランチを削除する)
NGな例(名詞だけで動作がわかりにくい)
- user()(何をする?)
- profile()(何をする?)
- data()(何をする?)
述語関数の命名例
isLoggedIn(): ユーザーがログインしているかどうかを判定する。hasValidCredentials(): 認証情報が有効かどうかを判定する。canAccessResource(): 特定のリソースへのアクセス権があるかどうかを判定する。
userAccountExists の場合
- この関数名は、システム内に特定のユーザーアカウントが存在するかどうかを判定することを示しています。
- 「Exists」という語は、存在を確認するという関数の目的を反映しており、述語関数の命名規則に適合しています。
結論
したがって、userAccountExists という関数名は、その機能を適切に表しており、述語関数としての命名規則に適合しているため問題ありません。動詞を先頭に置く一般的な規則は、主にアクションを実行する関数やメソッドに適用されますが、述語関数の場合はこの規則が若干異なります。
変数・プロパティ
変数・プロパティは「名詞」
変数やプロパティ(フィールド)は「データ」なので名詞が基本
OKな例(名詞)
- userName(ユーザーの名前)
- orderList(注文リスト)
- branchCount(ブランチの数)
NGな例(動詞っぽい)
- getUserName(これだとメソッドっぽい)
- fetchOrderList(これもメソッドっぽい)