ハンガリアン記法が嫌いだ

前提:VBでの話し。

嫌いな理由は、単語の意味がパッと見たときにわかりづらい。
だいたい、strNameとかlngTimeとか、より単純に Name とか Time のほうがわかりやすいでしょ?

ハンガリアン記法のメリットとして、「コーディング時に間違いに気づきやすくする」というのを聞くが、そのメリットを感じたことが無い。

Integer型の変数にString型の値を代入しようとたらコンパイラがエラーを出すでしょ?CやC++のように型チェックがある程度ルーズ(良い言い方で言えば自由度が高い)言語であればわかるけど、VBではハンガリアン記法によって「間違いに気づきやすくなった」というメリットを感じたことが無い。

そもそも、変数を宣言している場所と変数を使う場所ってだいたい1画面に収まる範囲内(30行程度の範囲)なのでどんな型の変数なのかは、視線をちょっとずらすだけでわかる。

もし、そうじゃないダラダラと長いコード*1を書いているのであれば、ハンガリアン記法はメリットがあるのかもしれない。(でも、そうなら、ハンガリアン記法に頼るよりダラダラと長いコードを書くのをやめるのが先だ)

それよりも重要なのは、いかに適切な変数名をつけるかだ。
temp とか work とか意味がわからん。ただし、超ローカルな変数(たとえばループの中だけで使う i とか j とかは許容範囲ではある)

変数を意味のある名前として名付けようという意識が希薄だからハンガリアン記法が受け入れられるのかな?

おおむねハンガリアン記法は嫌いだけど、「プレフィクス」については賛成。
たとえば、グローバル変数は "g_"ではじめるとか、クラス内のプライベート変数は"m_"ではじめるとか。

これは、ローカル変数と違って、変数を宣言している場所と使用している場所が離れている場合が多く、その変数がどこからやってきたものかを推測するのに役立つから。

あと、画面上のコントロールの名前に対して、"txt"とか"cmb"とかつけるのも賛成。
その変数の宣言場所がコーディング中にパッと参照できないから、この場合はメリットを十分に感じる。

と、なぜかクリスマスにハンガリアン記法について愚痴ってしまった。

*1:1画面に収まらない関数/メソッド