巨大な共通定数クラス・・・あるある

コーディングの掟(最強作法) 現場でよく見る不可解なJavaコードを一掃せよ! (開発の現場セレクション)

コーディングの掟(最強作法) 現場でよく見る不可解なJavaコードを一掃せよ! (開発の現場セレクション)

この本の15ページにある、巨大な共通定数クラスっていう見出しを見た瞬間「あー、あるある」ってなってしまった。
なんでこんなクラスを使いたがるのか全く分からなかったけど、それっぽい理由付けも出来なくはないんだなぁ*1


それはそうと、最近これの変形版というか、ひどい版に遭遇した。
定数を集めたファイルが、Hoge/SystemConst.cs、Hoge/CommonConst/SystemConst.cs*2、Hoge/CommonEnums.csの3つもあって、それぞれ

Hoge/SystemConst.cs
SystemConstクラス、SYSKBN列挙型、KBNTYPE列挙型
Hoge/CommonConst/SystemConst.cs
SystemConstクラス
Hoge/CommonEnums.cs
SYSKBN列挙型

を持っているという謎構成。
しかもコメント付いてないから何が何なのか全く不明で、何使えばいいの?って聞いたら、
「ここのExcelファイルを見ればいいよ」


・・・Excelで管理が前提ですか。


命名規約も最低で、なぜか列挙がすべて大文字になっていたり、中に入ってる列挙子は、

KBN_大分類_小分類

の形式だったり、

画面ID_小分類

だったり、もうめちゃくちゃ。
これだったらアンダーバーで分けずに、ドットで分けようよー。
タイプセーフにもなるんだから。


あと、直接は関係ないけど、なんでみんな文字列定数が好きなんだろう。

*1:どういう理由かは本を買って確認しよう!

*2:partial classじゃないですよ