ソースレビューをしていて以下のようなコードを見ました。
public class HogeConstant{
public static final String TAG_HOGE = "hoge";
public static final String TAG_FUGA = "fuga";
}
ある構造文書のタグをパースをするために、タグ名を定義しているんだそうです。
(ちなみにパース自体を行うクラスは別にあって、定数クラスの定数をimport staticで使ってる。)
んん?この定数のみが定義されたクラスって必要ですか…?
と思って指摘したんですが、「定義が多いのでパーサと一緒にすると見通しが悪くなる」と返され、
そういうもんなのかなー。と思い、それ以上は追及しなかったんですけど、
いま改めて考えても、クラスを分けることにたいしたメリットを感じられず。
むしろ、該当の構造文書をパースするのが1つのクラスのみであるなら、
それを強調するためにも、パーサクラス内で定数定義した方が良いのでは、と思います。
タグのグループを意識したいというのなら、パーサクラス内でenumクラス作ってもいいし。
でも、この辺って実装者の好みなのかなー
せめて、 privateなコンストラクタをつくるとかしてインスタンス生成の可能性だけは塞いでおいてほしいなあ。
(定数クラスのインスタンスを生成したくなる人はいないだろうけど、念のため、ね。)