はじめに
変数名の命名方法についてはネット上にも溢れかえっているし、各社のコーディングルールで定められている場合も多いだろう。
納得できる部分も多いし、そこから学んだことも多いが、今後の自分の命名方法を統一するためにも本記事にまとめてみる。
あくまでも個人の意見であり、今後の経験によって考えが変わる部分もあると思うが、それはその都度更新することにする。
なお、既にルールとして定められている命名規則があればそちらに従うべきである。
仮にその命名規則に違和感があってもチームの共通認識のほうが重要だ。
どうしても耐え難いものである場合は、改善提案として挙げてチーム内で議論する。
考え方
- 何のための変数なのか、適切な英名を付ける。
- 他人が読んでも理解できるようにするのはもちろんのこと、誤字脱字の防止のためにも辞書を引いたり翻訳サービスを利用するのが良いだろう。
- その変数がどんな形式の値を保持しているのか(数値、文字列など)を一目でわかるようにする。
- 具体的な型自体はIDEの機能でマウスカーソルなどを合わせると表示されることが多いが、一目でわかるというのはソースを読む側からしてみれば大きなメリットとなる。
英名を考えるときには各種辞典サイトや、Google翻訳やDeepLなどの一般的な知名度がある翻訳サービスの他にも、codicというサービスもある。
こちらはエンジニア向けと謳っているだけあって、より変数名・メソッド名らしく翻訳してくれるのでおすすめだ。
変数名の命名規則
以下に、形式ごとの具体例を記載する。
数値
-
num
やcnt
を末尾につける。
cnt
はカウントアップや上限などの「回数」を保持するイメージ。
その他は基本的にnum
を付ける。
numはnumeric(数値)とnumber(番号)どちらの意味もある。
英語としては異なるが、変数名としては纏めてしまって良いと考える。
retryLimitCnt // リトライ上限回数
weekdayNum //週番号
真偽値
-
is
を先頭につける。
基本的にこの形がベター。 -
has
、contains
を先頭につける。
何かを持つ、含むといった状態を表現する変数であればこちらを使用する。 -
exists
を末尾につける。
存在するかを表現する変数ならこちら。 -
can
を先頭につける。
可能であるかを表現する変数ならこちら。
結論、どんな時にtrue/falseになるのかが分かれば良い。
flagとつけるのは避けるべき。
フラグであることは分かっても、真偽の解釈が逆転してしまう可能性がある。
isValid // 有効である
hasToken // トークンを持っている
userExists // ユーザーが存在する
canWrite // 書き込み可能である
文字列
-
str
,name
を末尾につける
他の形式と紛らわしい場合にだけでも良い。
userIdなど、そのままで文字列が入っている変数だとわかるなら特に付け足す必要はない。
dateFormatStr // 日付フォーマット用文字列
columnName // カラム名
日時
-
DateTime
を末尾につける。
日付と時刻のどちらも保持するのであればこの形。 -
Date
やDay
を末尾につける。
日付のみであればこちら。 -
Time
を末尾につける。
時刻のみであればこちら。
nowDateTime // 現在日時
targetDate // 対象日付
authTime // 認証時刻
その他
配列ならarray
、リスト構造ならlist
、マップ構造ならmap
のように、何が入っているのかが分かる単語を末尾につければ良いと考える。
独自クラスならクラス名をそのまま変数名にしてしまっても良いだろう。
よく使う & 忘れがちな単語集
個人的によく使うものや、意味やスペルを忘れがちな単語を下記に纏める。
セットで使う単語
単語① | 単語② | 意味① | 意味② |
---|---|---|---|
from | to | ~から | ~まで |
first | last | 最初 | 最後 |
min | max | 最小 | 最大 |
start 1 | stop | 開始 | 停止 |
start 1 | finish | 開始 | 完了 |
begin 1 | end | 開始 | 終了 |
previous | next | 前 | 次 |
before | after | 以前 | 以後 |
open | close | 開く | 閉じる |
success | fail | 成功 | 失敗 |
単体で使う単語
単語 | 意味 |
---|---|
authentication | 2者間認証 |
certification | 3者間認証 |
bulk | 一括 |
type | 種類、区分 |
current | 現在の |