ハンガリアン記法ハンガリアン記法(ハンガリアンきほう、英: Hungarian notation)あるいはハンガリー記法(ハンガリーきほう)とは、プログラマがプログラムのソースコードを書く際に変数名やクラス名などの識別子に特別な接頭文字ないし接尾文字をつけることで、他の人がその識別子を見たときに識別子の使用方法・データ型情報・スコープなどが分かるようにするための命名法である。 ハンガリアン記法という名称は考案者チャールズ・シモニーがハンガリー出身であることに由来する[1][2]。 二種類のハンガリアン記法本来、シモニーの考案したハンガリアン記法とは、変数の意味や使用目的から接頭辞を決定することであり、型では区別できない情報を変数名に付与することで、紛らわしい変数の意味を明白にし混同をさけるためのものであった[1]。たとえば、論理座標とデバイス座標、X軸とY軸、ドルと円などで、これらは単純に型による安全性に頼ることはできない。 マイクロソフトのアプリケーション開発グループで開発されたこの記法は Excel や Word などの開発で成功を収めたため、Windows 開発グループでも採用された[1]。その際、シモニーの論文中の "type" がデータ型のことであると誤って解釈され、変数名にデータ型を表す接頭語や接尾語をつける記法だと誤解された[1]。シモニーの意図していた記法をアプリケーションハンガリアン、誤解に基づく記法をシステムハンガリアンと呼ぶ[1]。Windows APIおよびMFCはほとんどがシステムハンガリアンに従っている。システムハンガリアンは現在[いつ?]批判されることが多く、.NET Frameworkでは使われていない[3]。COMもシステムハンガリアンが伝統的に使われていたが、.NETの登場後に新しく追加されたコンポーネントに関してはシステムハンガリアンを採用しないものが増えている[4]。 ハンガリアン記法に二種類あることはあまり知られておらず[要出典]、単に「ハンガリアン記法」と言及された場合でも、システムハンガリアンの意味で用いられていることが多い。 具体例アプリケーションハンガリアンアプリケーションハンガリアンは、間違えたコードを間違えて見えるようにする記法である。 たとえば、相対座標にRelative Positionの また、ドルの接頭辞を このように、間違っているコードが間違っていると分かるようにするための記法が本来のハンガリアン記法である。 システムハンガリアンすべて接頭で使用する。C言語およびC++特有の言語仕様、言語機能および型名に依存する規約がほとんどである。
なお、これらは組み合わせて使われることもある。例えば「 ゼロ終端を表す「z」は、ほとんどの場合ゼロ終端文字列を表す「sz」の形で表れるが、まれに番兵として0やNullを配置している可変長配列やリストなどのデータ構造を示すために用いられている例もある。 グローバル変数やメンバー変数を表す接頭辞は、変数の型ではなくスコープを区別するためのものであるので、システムハンガリアンとは区別する見方もある。これの類似の例として、ローカル変数やプライベート変数など、外部から参照されない変数を判別するために接頭辞・接尾辞をつけるプログラミング作法も存在する。例えばC#コードを自動生成するフレームワークなどではprivateフィールド名先頭に"_"を付けたり、C++ Coding Standards[5]などの書籍ではメンバー変数名末尾に"_"を付けたりする慣習が使われることがある。 批評システムハンガリアン積極的批判消極的批判
脚注
関連項目外部リンク |