notation)あるいはハンガリー記法(ハンガリーきほう)とは、プログラマがプログラムのソースコードを書く際に変数名やクラス名などの識別子に特別な接頭文字ないし接尾文字をつけることで、他の人がその識別子を見たときに識別子の使用方法・データ型情報・スコープなどが分かるようにするための命名法である。ハンガリアン記法という名称は考案者チャールズ・シモニーがハンガリー出身であることに由来する。二種類のハンガリアン記法[編集]本来、シモニーの考案したハンガリアン記法とは、変数の意味や使用目的から接頭辞を決定することであり、型では区別できない情報を変数名に付与することで、紛らわしい変数の意味を明白にし混同をさけるためのものであった。論理座標とデバイス座標、X軸とY軸、ドルと円などで、これらは単純に型による安全性に頼ることはできない。開発グループでも採用された。データ型のことであると誤って解釈され、変数名にデータ型を表す接頭語や接尾語をつける記法だと誤解された。シモニーの意図していた記法をアプリケーションハンガリアン、誤解に基づく記法をシステムハンガリアンと呼ぶ。使われていない[1]。ハンガリアン記法に二種類あることはあまり知られておらず、単に「ハンガリアン記法」と言及された場合でも、システムハンガリアンの意味で用いられていることが多い。具体例[編集]アプリケーションハンガリアン[編集]アプリケーションハンガリアンは、間違えたコードを間違えて見えるようにする記法である。ような記述は誤りであることが明確に分かる。ような計算は間違いであることが明確である。このように、間違っているコードが間違っていると分かるようにするための記法が本来のハンガリアン記法である。hウィンドウハンドル型(Windowsのみ)hMainWindowg_グローバル変数g_iErrorCodem_クラスのメンバ変数m_nx_クラスのメンバ変数ny_CクラスCHogetag構造体tagRECTなお、これらは組み合わせて使われることもある。メンバ変数の符号なしlong整数」などといった具合である。ゼロ終端を表す「z」は、ほとんどの場合ゼロ終端文字列を表す「sz」の形で表れるが、まれに番兵として0やNullを配置している可変長配列やリストなどのデータ構造を示すために用いられている例もある。グローバル変数やメンバ変数を表す接頭辞は、変数の型ではなくスコープを区別するためのものであるので、システムハンガリアンとは区別する見方もある。これの類似の例として、ローカル変数やプライベート変数など、外部から参照されない変数を判別するために接頭辞・接尾辞をつけるプログラミング作法も存在する。アプリケーションハンガリアンに対する批判[編集]間違えたコードが機械的に検出される手法が利用可能ならば、間違えたコードが間違えて見える手法より明白に勝る。エラー検出に関連する技術は、ハンガリアン記法が考案され成功を収めた当時と比べ大きく進歩している。コードを間違える原因の中で、変数の意味(=型)の取り違えに由来するものが下位にあるとは言い難い。システムハンガリアンに対する批判[編集]積極的批判[編集]システムハンガリアンを使っているソースコードを修正してデータ型を変更した際、同時に変数名も変更するコストがかかる。変更を怠ると、たちまち不整合となり、保守の障害となるだけで一利もない。ような言語では型付けが存在するためにシステムハンガリアンを使用することによる利点はない[2]。総称型、メタプログラミングとの相性が悪い。消極的批判[編集]いわゆる良書と呼ばれるようなC++本で、現在システムハンガリアンを採用している例が皆無。Frameworkではハンガリアンを禁止[1]している。C言語の問題でシステムハンガリアンが使用されていない。2009年1月22日閲覧。使用を推奨していない。2009年1月22日閲覧。2010年1月22日閲覧。(プログラミング)Leszynski命名規則キャメル記法この項目は、コンピュータに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。(日時は個人設定で未設定ならばUTC)。表示-継承ライセンスの下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約を参照してください。開発者Cookieに関する声明モバイルビュ。