ハンガリアン記法は基本的に不要

.NET Frameworkの命名規則や各情報によると、「ハンガリアン記法は使わないように」というような情報はよく目にするが、正直なところ当方の場合はハンガリアン記法は目にはしているものの、基本的に使わないコーディングスタイルを採用しているため、あまり意識することはなかった。ここでは自分なりにハンガリアン記法について調べたことを書いてみたい。

ハンガリアン記法の由来

ハンガリアン記法のハンガリアンというのは、簡単に言ってしまえば「ハンガリー人」のことで、この記法を考案したチャールズ・シモニー氏がハンガリー出身だったことに由来するというものである。

ハンガリアン記法は大きく2種類ある

まず、ハンガリアン記法と言うものだが、これには大きく分けて2種類ある。一般的に「ハンガリアン記法」として知られている「システムハンガリアン」と、本来のシモニー氏が意図した用法である「アプリケーションハンガリアン」である。

システムハンガリアン

まず、「システムハンガリアン」についてだが、これは各変数のデータ型などをもとに変数名の接頭に何らかの文字列を加える記法である。例えば以下のよう例がある

文字 意味 用例
b/f 論理型(boolean/flag) bEnabled/fEnabled
n/i 整数型(number/integer) iCount/nCount
l_ ローカル変数(local) l_value
g_ グローバル変数(global) g_value
m_ メンバー変数(member) m_value

上記のような例がある。今日では型を使うプログラミング言語では基本的に変数の型が明示的に指定されることと、変数のスコープなどでもわざわざ接頭をつけなくても変数の定義された場所から分かることから、必要性が薄いだけでなく、変数の型が変わった時の弊害も指摘される。例えば論理型から整数型に変更した時に書き換えないと不整合が生じるなどである。

動的プログラミング言語など明示的には型を扱わない言語では変数の型が明示されないという意味ではまだ分かる部分はあるものの、上記の弊害があるため、基本的には使うべきではないだろう。

アプリケーションハンガリアン

次に「アプリケーションハンガリアン」だが、これは間違えているコードをはっきりと間違えているように見せるための記法である。例えばXのとりうる最大値としてmaxX、最小値としてminXなどがある場合である。この場合、以下のようなコードは間違いであることが見ただけでわかるようになる。

ほかには、日本円を意味するjpyやアメリカドルを意味するusdなどをプレフィックスとして使うことが想定される。

アプリケーションハンガリアン自体は間違っているコードをはっきりと間違えているように見せるための記法であり、現在でも考え方としては有効ではあるものの、変数が何を意味しているのかをわかりやすいようにするということを優先させるのが重要だろう。

そういう意味では、アプリケーションハンガリアンも意識して書く必要性はあるとは言えない。

最後に

今回、ハンガリアン記法について簡単に説明したが、システムハンガリアンは弊害が大きいので基本的に使うべきではない、アプリケーションハンガリアンは有効ではあるものの、わかりやすいコードの書き方を意識して書くことの方が重要であるため、意識してアプリケーションハンガリアンで書く必要性はない。

ただ、古いプロジェクトを中心にハンガリアン記法で書かれたコードがあるため、こういう書き方があるというのは是非とも覚えておきたい。

ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しております。仕事依頼や相談などについては、Contact Formよりお願いいたします。
スポンサーリンク

フォローする