見出し画像

変数やプロシージャの命名法まとめ

変数名やプロシージャ名って悩みますよね。

ネーミングセンスの問題というよりは、なんだかんだ「ルール」みたいなものがあって、それにそって書くことで皆が読みやすい、可読性の高いコードになるわけです。

ですので、結局はよく使う単語と、よく使う記法に慣れてしまえばすらすらと名前を付けられるようになるわけですが……プログラミング初心者にはそれが難しい。

……と悩んでいる最中、こんなサイトを見つけてしまいました。

codic

なんと、日本語入力した文章を、変数名やプロシージャ名として変換してくれるのです!

しかも、その精度や機能がすごい。

また、色々な記法が使えたり、登録(無料)をすれば、自分好みの単語がでてくるようにカスタマイズもできるようです。

使い方ガイドも含めて、シンプルでとても分かりやすいですし、もちろんスマホでも見れます。

本当に、これさえ知っておけばもうネーミングには迷いませんね。

とはいっても、多少はネーミングのルールを知っておかないと、どうしてそんな書かれ方をしているのか分からなくなってしまいます。

ということで今回はこのサイトの詳しい使い方を含めて、「命名法のまとめ」をしていきたいと思います。

基本

まずは基本から。

変数名は後から見てもわかるように
できれば英語で
プログラミング言語ごとのルールを守る

・変数名は後から見てもわかるように……
例えば、「a」や「b」という変数名が多用されていては、後から見たときに分かりづらくなってしまうので、単語をつなげたりして、変数名だけでその中身が想像できるようにしましょう。

・できれば英語で……
VBAでは変数名に日本語が使えます。しかし、できれば避けたい派の方が多数なようです。
理由としては、日本語がわからなければ使えないですし、日本語への変換も面倒であることなどが挙げられます。
……あとは単純に英語だけの方が見た目がかっこいいですしね。

・プログラミング言語ごとのルールを守る……
例えばVBAでは「数字から始まってはいけない」とか、「アンダーバー以外の記号は使えない」とか、いくつかのルールがあります。このルールは守らないとエラーになってしまうルールです。

日本語をつかうことはまぁ好みの問題だとしても、あとの二つは必ず守るべきべきルールになります(というか3つ目は守らないとプログラムが動きませんが)。

記述方法

次に、単語をつなげて名前を付ける際の記述方法を4つご紹介します。

キャメル記法
パスカル記法
スネーク記法
ハンガリアン記法

・キャメル記法……
最初の単語だけ先頭小文字で、2つ目以降の単語は先頭大文字。
例:userName

・パスカル記法……
単語の先頭を大文字にする。
例:UserName

・スネーク記法……
小文字の単語をアンダーバーで区切る。
例:user_name

・(システム)ハンガリアン記法……
先頭にデータ型を省略したものをつける。
strUserName
この方法はあまり推奨されていません(データ型を入力するメリットがほとんどないから)。

・(おまけ)アプリケーションハンガリアン記法……
コードを間違えないようにするために、先頭に単位などをつける。
例:dolTotal、yenTotal

5つ目は全体に共通する記法というわけではありませんが、システムハンガリアン記法の説明をしたので、付け足しました。
VBAではキャメル記法をよく見る気がしますが、Pythonではスネーク記法が多いように感じます。
ちなみに、codicでは記法の選択ができます。

慣用的に使われる書き方

次はよく使われる書き方についてです。

・定数はすべて大文字で
・真偽値やYes,Noを問うものには先頭に「is」をつける
・何かをするプロシージャ名などは、動詞から始める
・複数含むものは複数形にする

・定数はすべて大文字で……
定数はすべて大文字にします。ですので単語同士はアンダーバーでつなぎましょう。
例:USER_NAME
こうすることで、定数であることが一目でわかります。

・真偽値やYes,Noを問うものには先頭に「is」や「has」をつける……
例えば、「うるう年だったらTrueを入れる変数」など、ブール型のものはこの書き方がよくされます。また、「うるう年か判定するために使う変数」など、真偽を問うために使うブール型以外の変数にも使われることがあります。
例:isLeapYear、hasCreated
後でブール型の変数名のパターンをまとめて紹介します。

・何かをするプロシージャ名などは、動詞から始める……
「作成する」や「変数に代入する」など、何かをするプロシージャなどには先頭に動詞をつけます。
例:createName

・複数含むものは複数形にする……
例えば配列やコレクションなど、複数のものを含む場合には、複数形にします。
例:userNames、getDictionaries


ブール型の変数名まとめ

TrueかFalseしかとらないブール型でよく使われる命名法のまとめです。

・is+形容詞……形容詞の状態を確認する……isValid
・has+形容詞……完了、継続を確認する……hasSent
・can+動詞原型……動詞の挙動が可能か確認する……canGet
・三単現動詞……動詞の状態か確認する……exists
・三単現動詞+名詞……動詞の状態に名詞があるか確認する……existsError
・should+動詞原型……行うべきか確認する……ShouldCollect

ループカウンターのまとめ

ループカウンターは基本的に「i」「j」「k」の順番で使います。

「i」を使っている最中に他のループカウンターを使いたくなったら「j」を、という感じです。

他にも以下のような書き方があるそうです。

・i, j, k, ……
・i1, i2, i3, ……
・i, ii, iii, ……

よく使われる変数名まとめ

よく使われる変数名をご紹介します。

・buf……中間処理などで使用。bufferの略
・tmp, temp……一時的に使用する変数。temporaryの略。
・cnt……数えるときに使用。counterの略。
・msg……ユーザーに表示するメッセージを入れる変数。messageの略。
・flag……True or False を入れる変数。
・n, num……一時的な数値を入れる変数。numberの略。
・target……なんらかの対象を入れる変数。
・○○array, ○○list……配列

対義語まとめ

よく使う対義語のまとめです。

・Begin ⇔ End
・Start ⇔ Stop
・Top ⇔ Bottom
・High ⇔ Low
・Big ⇔ Small
・Up ⇔ Down
・Upper ⇔ Lower
・Create ⇔ Destroy
・Get ⇔ Set
・Get ⇔ Put
・Go ⇔ Back
・Previous ⇔ Next
・Show ⇔ Hide
・Input ⇔ Output

可読性のために

ということで、色々紹介してきましたが、共通して大事なことは「可読性」です。いかに読みやすいコードを作るか……というのは他人のためだけでなく、将来の自分のためにもなります(自分で書いたコードが理解できないのは悲しいですからね)。

ですので、ここで書いたルールにのっとっていなくても、もちろん問題はないのですが、仕事で使う時など、人の目に触れる可能性があるときは、少し意識してみると格段に可読性を高めることができます。

まぁ慣れないうちはとりあえずcodicで。

ps
と偉そうに語りましたが、私も今まで変数の設定がめちゃくちゃでした(だからこのようなまとめを作ったのですが)。
ということで、まだまだ未熟なところがあると思うので、コメントでご指摘等々いただけたらうれしいです。

この記事が気に入ったらサポートをしてみませんか?