過去にもハンガリアン記法について述べたことがある。繰り返しになるかもしれないが、またメモしておく。

一般にハンガリアン記法といえば「変数の先頭に変数の型を表す接頭語を付ける」と理解されている。これは「システムハンガリアン」という手法であり、最近は推奨されなくなってきているそうだ。
ただし、本来のハンガリアン記法は「変数の先頭にその変数の意味や使用目的を表す接頭語を付ける」方法で、これにより「違った意味や使用目的の変数が使われているとすぐに間違いだと気づく」ようになるそうだ。それは「アプリケーションハンガリアン」と呼ばれる。

こういう記法が許されるのは、いわゆる高級言語と呼ばれるものに限定される。アセンブラでは適用しようがない。
つまり、言語によっては適用できない、ということがある訳だ。


まず、アプリケーションハンガリアンについて。これを実施するには、「意味や使用目的と、どんな接頭語を使うのかの対応表」が要るだろう。今まで多くの作業に携わったが、この用語はこのような変数にするというプロジェクトの用語辞書があったのはただの1箇所だけであった。
また、どれを接頭語にするのか、決めるのもやっかいだ。変数名の本体に入れたい場合もあるだろうし、用意していた接頭語だけでは「すぐ見間違いだと気づく」状態にならなくなることもある。そう考えると、業務アプリケーションの場合、結構適用が難しいのではないか。




ここから、ちょっと考えている仮説の話。

Cをやっている人から聞いた話や、Javaの開発などを見ていても、システムハンガリアンは使われているケースは希である。しかし、VB系の言語ではシステムハンガリアンが根強く残っている。

この違いは何だろう?

言語の特徴によって、その傾向が出ている、ところからすると、
「言語によって、システムハンガリアンを放棄しやすいものとしにくいものがある」という仮説が導き出されるのではないか?

ならば、VB系言語の特徴はなんだ?というと
・Variant 型という、何でもあり型がある。
・必ずしも変数が強制されるわけではない。
・PublicやPrivateという概念はあるが、必ずしも必須ではない。
・モジュールの種類があり、それを混在させることができる。
・変数の大文字と小文字は区別されない。
・キャスト(型変換)が勝手に行われる。

くらいか?

このなかにヒントが隠れていないか、今後考えてみることにする。