コンピュータプログラミングを行う際、避けて通れない問題がデータを記憶するロッカーの役割をはたす変数の命名です。
ウェブなどソースを見ることができるメディアでのプログラミングは、使われている変数の用語を見ただけでプログラマーの腕が分かってしまったりします。また、プログラマーは3か月経つと別人になると言われており、過去のプログラムを忘れてしまいがちです。
変数名の決定は、変数そのものが何を扱うのかという本質を示す必要があり、プログラマーが数ヵ月後に読んでも正しく理解できる必要があり、プログラムをより理解しやすくするための重要な作業です。以下は松本式変数命名のルールです。自分の過去のプログラムもこの命名ルールにのっとっていない部分が多々あるのでメンテナンスを兼ねて地道に修正していきたいと思います。
変数命名のガイドライン
・変数が表すものを完全に正確に表していること
・ローマ字アルファベットではなく英語を使用する。
・変数名に含めることができるのは英数字のみ。記号は使わない。
・頭文字は数字であってはいけない
・数字自体お勧めしない
・8から20文字くらいが適当
・他のものと混同しにくく、覚えやすいこと
・変数名は常に小文字で開始する
・変数名が複数の単語で構成されている場合は、2番目以降の最初の文字を大文字にする
・変数名は省略しすぎないようにする
・クラス名はできるだけ略語を避ける
・クラス名は,大文字で始まる名詞
・クラス定数はすべて大文字のアンダーバー(_)で分割した単語
・メソッド名は,小文字で始まる動詞
・グローバル変数は_(アンダースコア)で書き始める
・グローバルに用いる変数に共通のプレフィックス (gやg_) を つける。モジュール内変数に m_をつける。
・単純なループ制御変数はi, k, jなどでよい
・テンポラリ変数も、x, yなどではなく、できるだけ意味のある名前にする
・意味のない変数名としてhoge,foo,barを利用可能
一文字変数を利用していいケース
・a: 一時的な配列(Array)
・e: イベント
・i: ループの中のカウンター(indexの頭文字)
・j: ループを2重、3重にする場合、アルファベットを順番でj,k..とiの代わりに順番に利用
・k: ループを2重、3重にする場合、アルファベットを順番でj,k..とiの代わりに順番に利用
・n: 一時的な数字(Number)
・o: 一時的なオブジェクト(Object)
・s: 一時的な文字列(String)
座標変数の場合
座標用変数(サイズ変数)などは『x』、『y』を付けます。
・bx, by ⇒ベース座標
・cx, cy ⇒開始座標,カーソル座標,一般座標
・ex, ey ⇒終了座標
・mx, my ⇒相対移動、絶対移動の座標
・px, py ⇒一般ピクセル座標
・rx, ry ⇒半径ピクセル座標
・sx, sy ⇒縦横サイズ
・wx, wy ⇒ウインドウ座標
変数名の短縮法
・一般的な省略語をつかう
・先頭にこない母音を削る
・それぞれの単語の頭文字、または先頭の数文字を使う
・それぞれの単語の1、2、3文字目で切り捨てる
・それぞれの単語の最初と、最後の文字を使用する
・もっとも重要な単語を最大3語までとりだす
・不要なサフィックス(_ing, _edなど)を除く
・発音できる名前にする
・関連した省略形は同じようにそろえる
・読み違えやすい組み合わせを避ける
・名前は、書き手ではなく読み手のためにつけることを忘れない
つけてはいけない名前
・あいまいで紛らわしい名前
・同じ意味を持つ複数の名前
・違う内容の変数に似た名前
・同じ発音になる名前
・名詞+数詞(File1, File2など)
・大文字、小文字だけの区別で名前をつける
・読み間違いしやすい文字を多用した名前(lや1やI、2とZ、など…)
・変数の意味しているものと関係がない名前
・予約語