ハンガリアン記法
クラス名や変数名に特別な接頭字や接尾字を付与する事で、データ型情報・スコープなどが分かるようにするための命名法
ハンガリアン記法にもアプリケーションハンガリアンとシステムハンガリアンが存在
アプリケーションハンガリアンは、実装をしている事で気づく様に仕向ける記法
(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ではうまくハンドリングしてくれるのやろか)
Clean Code アジャイルソフトウェア達人の技 (アスキードワンゴ)
- 作者:Robert C.Martin,花井 志生
- 発売日: 2017/12/28
- メディア: Kindle版
Clean Coder プロフェッショナルプログラマへの道 (アスキードワンゴ)
- 作者:Robert C.Martin,角 征典
- 発売日: 2018/08/01
- メディア: Kindle版