gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

ハンガリアン記法、ねぇ…

ふとあちこちのBlogとかを読んで、久しぶりにみた文字列。
んと…ちょっと本質をのぞいてみる。


「わかりやすいコード」の一環として「この変数が何を意味しているのかをわかりやすく把握したい」「紛らわしい変数の意味を明白にし混同をさけたい」。


うんそれはわかる。
だとすると。「"何を意味しているのか"の意味ってなに?」あたりが考察ポイントだろうか?


世間様一般では、そのために「ハンガリアン記法」として「変数の型を前置詞としてつける」事を推奨する。
つまり「意味 == 変数の型」という感じである。
具体的には。たとえばboolean値の変数にはbを付け、char型にはchを、int型にはnを、それぞれ以下略。
これに意味がない…というよりも、もう一歩踏み込んで「危険な発想である」ことはわかるよね?


ぢつはこの手法を、システムハンガリアンと呼称するですが。システムハンガリアン、そも「誤解から」派生したものだそうです。
本来の、Charles Simonyi氏が考え、提案したのは、アプリケーションハンガリアン、と呼称される、ぶっちゃけ「別物」なんです。
Charles Simonyi氏が考えていたのは、データの「種類」によって前置詞を以下略、という発想だったのです。ちょっと格好いい言葉を使うと「意味論的な情報を与えることを意図したものである」という訳です。
「意味 == データの種類」ですね。


…んと。もう一歩…とは言わない。半歩進めたらADT(abstract data type)になるだけぢゃん。


そも。
「プログラミングの実装のレイヤーとして」型が厳密でありしっかりしていることは、大変にありがたいのですが。
同じくらいに、設計だのその辺のレイヤーでは、そんなプリミティブな型に縛られたりするとえらいことしんどかったりするわけです。


まぁ。
きちっと「OO(object-oriented:オブジェクト指向)」やってれば一撃で予想つきそうなラインではあるのですが。
何となく…まさに「多分このネタ忘れるだろうから」メモw