変数の命名規則

名は体を現す
Names and natures do often agree.
変数や関数の命名規則はどうしてますか。
個人の好みのあらわれるところではありますが、業務だとコーディング規約で強制されているものところもあると思います。

命名規則の例としては、複数単語からなる変数や関数の命名規則があります。

Camal記法
最初の単語のみ小文字で始め、以降単語の先頭文字は大文字
thisIsAnExample
Pacal記法
各単語の先頭文字は大文字
ThisIsAnExample
アンダーバー区切り
単語は全て小文字で区切りはアンダーバー
this_is_an_example


Camel記法やPascal記法は、JavaやC++のコーディング規約における変数や関数の命名規則としてよく見かけますし、アンダーバー区切りの命名規則はGNUコーディング規約(GNU coding standard)のようなC言語のコーディング規約における変数や関数の命名規則として見かけます。

複数単語の表現方法以外のところでは、意味名にその属性を示すプレフィックスをつけるというものがあります。その種の命名規則の中で、もっとも有名で悪名高いのものといえば、やはりハンガリアン記法でしょう。
Windowsプログラミングの経験があれば、一度は目にしたことがあるのではないでしょうか。Microsoftのプログラマが始めた記法で、意味名の前に変数の型(種別)を示すPrefixを付けるというものです。
# .NETでは使用しなくなったようです

意味を示すprefixを定義するというアイデア自体は良いと思うのですが、ハンガリアン記法が不評なのは、ひとつの変数にprefixが何個も付与された時です。

例えば、
char * apszName[]; /*名前の文字列へのポインタの配列*/
は、わかりやすいどころか意味不明の文字の羅列に見えてしまいます。

4756136494私としては、発音できない変数名はあまり好きではないのでハンガリアン記法もあまり好きではありません。また、charやlong等の変数の型をprefixとしてつけるのも抵抗があります。
ポインタの「p_」、メンバの「m_」、グローバル変数を示す「g_」等は良いと思うので使います。しかし、charやlong等の種別は、コードを読む上でほとんど役に立ちません。勿論、役に立つことがなくはないですが、それよりも間違ったprefixが当てられて気がつかないので、冗長なコメントと同様かえって混乱のもとだと思っています。

ハンガリアン記法には欠点も多いですが、統一した命名規則を定義するという点は他人のコードを解読する時には重要です。
まれに、統一されていないソースにであうことがありますが、第3者から見ると非常に混乱します。
少なくとも、自分なりの命名規則は持ちましょう。

【関連リンク】
Hungarian Notation (MSDN)
名前付けのガイドライン (MSDN)
ハンガリアン記法は悪なのか?(Lynxの迷走(瞑想?))
ハンガリアン記法ってナンデスカ?(それほど間違ってないプログラマ用語辞典)
GNU コーディング規約 - 変数,関数,ファイルの名前付け
Java言語コーディング規約 - ネーミング規約

【関連書籍】
C++ Coding Standards―101のルール、ガイドライン、ベストプラクティス
リファクタリング―プログラムの体質改善テクニック
プログラミング作法 ブライアン・カーニハン ロブ・パイク
組込みソフトウェア開発向けコーディング作法ガイド[C言語版] SEC
Code Complete第2版〈上〉―完全なプログラミングを目指して スティーブ マコネル

コメント

非公開コメント

トラックバック

業に入れば業に従え

自分で一からプログラムを書くこともあるが、 当然、他人が書いたものを拡張したり、...

変数の命名規則

変数の命名規則について少々調べてみたとこといくつかの情報が出てきたので明記しておきます。プログラムの作成で欠かせない「変数」にはいろいろな名前を付けます。各プログラマーが独自の名前を付けるとそのシステム(プログラム)は統一性の無いシステムになってしまい...

本のおすすめ

4274065979

4844337858

482228493X

4904807057

4873114799


プロフィール

  • Author:proger
  • 組み込み関係で仕事してます

ブログ内検索