ハンガリアン記法とハンガリアン汚染

ハンガリアン記法

クラス名や変数名に特別な接頭字や接尾字を付与する事で、データ型情報・スコープなどが分かるようにするための命名
ハンガリアン記法にもアプリケーションハンガリアンとシステムハンガリアンが存在
アプリケーションハンガリアンは、実装をしている事で気づく様に仕向ける記法
(ex. 摂氏はc、華氏はfを付けるとしておけば、c_hoge1+ f_hoge2と実装しようとしているとおかしい事に気づける)
システムハンガリアンは、システム的に決まっているクラス名や変数名に対して、それを伝達する情報を付加すること
(ex. Javaのインタフェースなら接頭辞にIを付与、Javaの実装クラスなら)
ハンガリアン記法 - Wikipedia

ハンガリアン汚染

ハンガリアン記法が含まれてしまうこと
clean codeに記載有
moderatemisbehaviour.github.io

システムハンガリアンが嫌がられる理由(推測含む)

・クラス名や変数名の特徴を表す内容を変更したのに、名称を変更し忘れて意味が間違えてしまう事が多い
 (ex. BigDecimalからDoubleに変更したのに、BigDecimalを表す接頭辞を付与している)
・過去はIDEなどが無い、貧弱であったが、昨今ではそれらツールでカバーできる
 結果、可読性が落ちる
・上記ツールでカバーできる範囲なのに、無駄に覚えるべきルールが増える
・ソート順序が狂う

所感

  • 基本的にはハンガリアン汚染と呼ぶことに賛成(システムハンガリアン記法は不要)
  • アプリケーションハンガリアンは、みんなが守れるレベルの内容であればすべきだけど、拘りすぎると可読性を失う可能性あるかも
  • とはいえ、スタックトレースをぱっと読む際に、ハンガリアン記法で書かれていると便利な時は多い

 (eclipseはあんま昔からここ変わってないが、InteliJやNetBeansではうまくハンドリングしてくれるのやろか)