命名規則の1つで、変数やクラスなどの名前に、その意味を表現する特定の接頭辞や接尾辞を付ける方法のことです。
ハンガリアン記法には2つあり、アプリケーションハンガリアンとシステムハンガリアンと呼び分けられています。
アプリケーションハンガリアンは、名前の先頭や末尾に、意味や機能、目的といったものを表現する短い言葉を付加するというものです。そうすることで、型だけでは表現しきれない情報を付加でき、同じ型だが異なる内容のものであることを明確にして、可読性を向上させます。たとえば、角度を保存する変数があるとして、それを float型で表現すると、実際に保持している値が、度数による表現なのかラジアンによる表現なのかといったことまでは判断できません。コンパイラにとっても同じ型ですから、間違った代入や比較をしてしまう可能性があります。変数名に deg や rad のような接頭辞を付けると(人間が)区別が付けられるため、間違いを未然に防いだり、後から気付いたりする助けになります。
とはいえ、明確に異なる型を定義して使い分けたほうが、コンパイラによるチェックも働くため、あまり価値はないとする考え方もあります。
システムハンガリアンは、型に応じた接頭辞を名前に付加するというものです。たとえば、int型の変数の名前に「i」を、論理型に「b」を付けるといったものです。複合的になることもあります(int のポインタ型に対して pi を付けるなど)。しかし、型は宣言をみればわかることですし、後から型を変更しづらくなる欠点もあり、システムハンガリアンには否定的な意見も多くあります。
システムハンガリアンは Windows の開発グループに採用され、Windows API で積極的に使われていました(Windows API を使用する プログラムを書くと、あらゆる箇所に登場することが分かります)。しかし、.NET Framework の時代になって完全に使われなくなっており、Microsoft 自身が使用を推奨しないと記述しています。[1]
ハンガリアン記法が考案されたとき、それは今でいうアプリケーションハンガリアンのことでした。しかし、その意図が、変数の型に応じた命名を行う方法であると誤解され、システムハンガリアンが生まれました。システムハンガリアンの方がよく知られるようになってしまい、単にハンガリアン記法といったとき、システムハンガリアンのことだと認識されるケースが多くなりました。しかし、システムハンガリアンには否定的な意見も多く、そのためハンガリアン記法自体が否定的に捉えられることがあります。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |