|
変数や関数などの識別子に名前をつけるという作業はプログラミングをするうえで避けて通れません。それだけに識別子の命名法について考えてみる価値はあります。 そもそも人間は「名前をつける」という一種の抽象化によってものを認識します。逆に「適切な名前をつけることができない」ということは、その変数や関数の意味を正確に把握していないという証拠です。ですから、識別子には必ず意味のある名前をつけるよう心掛けましょう。たったそれだけのことで、アルゴリズムが明確になり、初歩的なバグは激減します。 ここでは、私が実践している命名法を少し紹介します。 |
|||
| 大文字と小文字 | |||
|
まず一般的な規則について。識別子のスタイルには大きく分けて次の3つのパターンがあります。
私は 1. のような名前をつけるようにしています。この書き方が、この後で述べるプレフィックスやサフィックスと最も組み合わせやすいからです。 |
|||
| 変数のプレフィックス | |||
|
変数の型の違いによって、例えば次のようなプレフィックスをつけるようにしています。
例をいくつか挙げておきます。
|
|||
| 変数のサフィックス | |||
|
変数が表すものの内容によって、例えば次のようなサフィックスをつけるようにしています。
次のようなサフィックスはあいまいなので使わない方が良いでしょう。
例をいくつか挙げておきます。
|
|||
| 対義語 | |||
|
反対の意味を表す言葉は慎重に対応付けるべきです。たとえば Begin の反対は Stop ではないし、Top の反対は End ではありません。正しい対義語の例を挙げます(「正しい」と言っても英語として正しいという意味ではありません。プログラミング上の慣例として正しいという意味ですので注意して下さい)。
|
|||
| 関数名 | |||
|
関数には大きく分けて次の2種類があります。
前者の名前には動詞を、後者の名前には名詞を使うようにするのが良いでしょう。例をいくつか挙げておきます。
|
|||
| ブーリアン変数の名前 | |||
|
ブーリアン(true, false の2つの値のどちらかを持つ型)の変数名は、どちらが true でどちらが false なのかがはっきりわかるようにつけます。たとえばエラーがあったかどうかを表すのに bResult という変数名を使ってしまっては、エラーがあったときに true なのか、なかったときに true なのかわかりません。こういう場合は bSuccess とか bError とかいう名前を使うようにすると、どちらの状態が true なのかが明確になります。 |
|||
| ブーリアン関数の名前 | |||
|
ブーリアンを返す関数は "Is〜" という名前にすることが多いです。例えば接続中かどうかを知る関数は IsConnected 、可視かどうかを知るには IsVisible 、オープンされているかどうかを知るには IsOpen などという関数名が適しています。もちろんどちらの状態が true なのかが明確な名前にするというのはブーリアン変数名の場合と同様です。 ブーリアンをパラメータにとる関数は、一般的に避けた方が良いでしょう。たとえばウィンドウの表示/非表示を制御する関数として
というプロトタイプを設計するのは良くありません。ウィンドウを非表示にするときに ShowWindow(false); と書くのは分かりやすいとは言えないからです。こういう場合は次のように2つに分けた設計にします。
VC を使っている人は、ダイアログを作るときのコマンドで UpdateData(TRUE/FALSE) というのを知っているでしょう。これなんか、ゲゲーッですね。どっちがどっちだか、いちいちわからなくなります。 |
|||
| 長さ | |||
|
一般的に、変数名は長いほど目立ちます。そこで目立たせたい(重要な)変数名ほど長い名前をつけるようにします。 もちろん短い変数名にも意味があります。例えばループカウンタには i や j が使われることが多いですが、特に注意をひきたい場合以外でループカウンタに長い名前をつけると混乱を招きます。 |
|||
| スコープのプレフィックス | |||
|
スコープによって、変数にプレフィックスをつけるようにすると良いでしょう。例えば次のようにします(この方法は完全に私の我流なので、あくまで例としてとらえてください)。
例えば出力ファイルポインタをファイルスコープで持っている場合、その変数は
などとなります。 スコープについては次のトピックで詳しくお話することにしましょう。 |
|||
(「プログラミングのはなし」は1998年1月から1999年1月にかけて作成されたコンテンツです。)