😃

変数名の付け方をまとめてみた

2021/05/07に公開

今回は変数名の付け方についていろんなサイトや書籍を漁ってみたので、自分の解釈でまとめてみました。
最後におすすめサイトも紹介しているので、そちらを見ていただくとより理解が深まると思います!

良い変数名とは

良い変数名は「必要な情報が含まれている」といえます。
例えば「name」という変数名はフルネームなのか名字なのか名前なのかが分かりませんが、
「fullName」だと「フルネームなんだな」と理解できます。「name」だと情報不足なことがあります。

良い変数名をつけると「無駄なコメントが減る」「他の開発者にとって読みやすい」などのメリットがあります。

無駄なコメントは開発者を混乱させますし読みにくいコードはバグが生まれる原因になるので、変数名はかなり重要です。

変数名をつけるコツ

①広く意味を持つ名前をつけない

先程例に上げた「name」は広い意味を持ってしまっているのでフルネーム?名字?名前?とわからなくなってしまいます。

他にも「tmp」や「temp」は「一時的」という意味がありますが、意味が広すぎて一時的な何者なのか?が全くわかりません。

前後の文脈がないと判断できないもの、前後の文脈があっても判断できないものは修正する余地があるでしょう。

②多少長くなっても必要な情報は必ずいれる

変数名が長いと嫌われる傾向にありますが、個人的には多少長くなっても構わないと思います。
それより必要な情報を変数名に入れるほうが優先だと思います。

例えば、平文のパスワードの場合「password」ではなく「plain_password」が良いですし、
税込み金額は「price」ではなく「priceIncludingTax」とかの方が良いと思います。
また、税込金額を文字列フォーマットした場合は「formattedPriceIncludingTax」とかの方が良いかもしれません。(もっと適切な英語があるかも)

③不要な単語は排除する

逆に無駄な情報は変数名にはいれないという考え方です。必要な情報を入れた上でなるべく変数名を短くしようということです。

個人的にはこれは優先度低で良いと思います。
変数名を短くしようとするあまり必要な情報が削られてしまうと意味がないので、余裕がある方のみ実施していただくのが良いかなと思います。

例えば「convertToString」は「toString」で良いです。(リーダブルコードからパクってきました。)
これに関しては他の良い例が思い浮かばないので、何か思い当たるものがある方はコメントください...!

④日本語をローマ字にした変数名は絶対NG

だいぶ初歩的な話だと思いますが、

「性別」の変数名は「seibetsu」ではなく「gender」
「情報」の変数名は「jyoho」ではなく「information」が良いです。

⑤配列やコレクションは複数形にする

例えば「userList」は「users」でOKです。複数系だとuserが複数いるんだなってわかりますよね。

「data」とか「information」のように複数形かどうかわからない場合は「data_array」とかで良いと思います。

※厳密にはdataはdatumの複数形とも言われたりしていますが、一般的な認知度とか周りの人が銅使っているか?で決めてしまって良いと思います。

⑥boolean型は「is」「has」「can」「should」をつけると分かりやすくなることが多い

is ... 状態を表す(isActiveとか)
has ... 所有を表す(hasFileとか)
can ... 可能を表す(canGetとか)
should ... すべきかどうか(shouldChangeとか)

canとshouldはあまり使っているところを見たことがないですが、isやhasはよく使います。

⑦品詞を意識する

変数名は基本的に「名詞」なので、「名詞のみ」もしくは「形容詞 + 名詞」でつけます。
たまに変数名なのに動詞になっていることがあるので、品詞を意識してみると良いと思います。

変数名に限らず、例えば関数名は何かを処理する動作を表しているはずなので基本的に「動詞のみ」もしくは「動詞 + 名詞」のように動詞から始まります。

参考サイト / おすすめサイト

Discussion