Top Of Page | いい名前 | 変数種による名前 | 命名規約 | 型付き名 | 名前の短縮 | Bottom |
はじめに名前ありき。
これは洋の東西を問わず、呪術魔術の基本として伝えられる語句です。
いきなり魔術や呪術や出してしまって引いてらっしゃる方も多いとは思いますが、コンピュータの世界ではプログラマは一種の魔法使いかもしれません。
プログラミング言語やスクリプトといった呪文、ミドルウェアやデータベースエンジンといった触媒を使いこなし、さまざまな現象を仮想空間に作り出します。
そして実際に、非常に優れた専門家は、敬意を込めて、同じ開発者から(特に英語圏では)こんな風に呼ばれます。
─ウィザード。
多くの系統の魔術や呪術では、「名前」というものは、すべての基本です。
テンポラリ変数は中間結果を格納したり、とりあえず必要な値を保存したりする変数です。tempやXなどを使う傾向にありますが、やめた方がよいでしょう。そのような名前を付けるときは、取り組むべき問題を十分に理解していないことが多いのです。
BOOL変数は、なるべくケレン味がない、ストレートな変数名をつけましょう。TRUEかFALSEかの値を連想できる名前にします。たとえば:
「まじない」とはそうあるべく縛ること、そして最も強力で基本的な縛りが名前なのだそうです。
名前がないものは存在しないと同じ、名前は、それがそこにあることの証明でもあるのです。落ちているゴミも、ゴミという名前がついています。名前がつけられないものは、何でもないもの、つまりそこにあってもなくてもどうでもいいものということになるでしょう。
これは、少なくともプログラミングの世界では全く真理をついています。
名前が無いものは存在しないと同じです。
プログラマが変数名を決めるとき、その変数の役割が決められます。変数名の決定は、変数そのものが何を扱うのかという本質を縛り、プログラムをより理解しやすくするための、重大な儀式なのです。
いい名前
私の実家で飼っている犬の名前はコロといいます。犬の名前はどうつけてもいいんですが、変数の名前はそうはいきません。
これは、犬と犬の名前は別のものですが、変数と変数の名前は、本質的に同じものでなくてはならないからです。
いい名前というのは、プログラムの読みやすさの基本だということを認識して下さい。
具体的に、いい名前とはどんな名前でしょうか。
プログラムの世界では、次のようなガイドラインで命名されたものがいい名前だと考えています。
変数が表すものを完全に表現すると、長い名前になります。
しかし、長すぎる名前は、入力に手間取りますし、なにより…
長すぎる変数名なんて見たくないですよね?
試してみましょうか。
NumberOfSeatsInTheBIGEGG
ビッグエッグの座席数、を現してみたんですが。
見るのいやでしょう?
読み手にはそういう心理があるので、長すぎる変数名はその変数の意味をよく伝えることができません。
8から20文字くらいが、デバッグしやすいという調査報告があります。つまり短くて判りやすい名前が大事になる訳です。この点についてはまたあとで触れます。
より掘り下げて、名前の使われ方を分析してみましょう。
変数の種類による命名のガイドライン
変数は「データの入れ物」以外に処理の都合からいろいろな使われ方をします。
単純なループの制御変数は単純な名前(i や j や k など)でかまいません。
しかしそのループ制御変数をループの外側でも使用するなら、その変数に意味を持たせたほうがずっと読みやすくなります。
ループの始まりから終わりまでの長さが長いとき、ネストが深いときも意味を持たせたほうがいいでしょう。
テンポラリ変数も、できるだけ意味を持たせた名前にしましょう。
中には、Isを先頭につけることを好むプログラマもいます。その場合はプログラムを通してIsをつけましょう。プログラム全体を通したきまりが重要なのです。
また、BOOL変数名にNotを付けないで下さい。対義語はかまいません。たとえば、NotSuccessではなく、Errorを使用しましょう。
命名規約
名前付けのルールのことを命名規約と呼びます。
命名規約は、一つのプログラム/プロジェクトを大人数で作る場合などに最大の効果を発揮しますが、それだけではありません。体系付けられた命名規約は、他のプログラマが自分のプログラムを調べ、変更するときに、そして、今作っているプログラムのことをすっかり忘れた未来の自分が自分のプログラムを調べ、変更するときに、重要なヒントをくれるのです。
どんな規約をつくればいいのでしょうか。ここに例を挙げますので参考にしていただければ幸いです。
たとえばm_はモジュール変数、g_はグローバル変数、c_は定数などです。
a_ をパラメータ=引数(Argument)にプレフィクスして、うっかりパラメータとローカルな変数に同じ名前をつけないようにするというのも非常に有効だと思います。(thanks: handle「虎之助」さん)
ポインタは言語によっては「ポインタ」の概念そのものがないので考慮しなくてもかまわないのですが、しかし「ポインタ」という概念をサポートしているプログラミング言語においては、ポインタは便利にして危険なものですので、あえてポインタだとわかるような名前をつけたほうがよいでしょう。
変数の型がわかる名前
(1/25/2000 add thanks! : handle「風水師」さん)
変数の型を変数名の最初につけて(プレフィクスするといいます)、プログラマが常にその型を意識してプログラミングする方法があります。
この手法として有名なのは、Windowsプログラミングの世界では事実上の標準になっている、ハンガリアンネーミング(ハンガリアン記法)という命名法です。
プレフィクス | データ型 |
---|---|
c | char |
by | BYTE (unsigned char) |
n | int または short |
x, y | 座標を表す。short や int が使われる |
cx, cy | 幅と高さをあらわす。 count of X や count of Y である。 |
b, f | BOOL値を表す。fはフラグの意 |
w | WORD |
l | long |
dw | DWORD |
p | ポインタを表す |
fn | 関数を示す |
s | 文字列 (string) |
sz | ヌル終端文字列 (String terminated by Zero) |
最後の「変数の意味しているものと関係がない名前」ですが、実際にいたんですよ、「最高得点」を表す変数名に「Cookie」なんて名前をつけてしまったプログラマが(^^;
こんな名前では、なにがなんだか…、ちなみに、これやったのは私です。若かった(゜゜)遠い目。
はじめに | ルーチン | モジュール | 変数名の力 | 変数使用法 | 制御構造 | レイアウト | コメント | テスト | デバッグ | 謝辞 | Top of Site |