Effective Javaを読んでいる⑲

型を定義するためだけにインターフェースを使いなさい

インターフェースのクラスへの実装はクライアントがそのクラスのインスタンスによって出来ることをについて表現すべきである。

constant intercafe

メソッドがなくて定数の定義だけしてるインターフェース
namespaceを汚すというのはどういうことだろう

とにかく↑みたいのはやめなさい、と
・namesaceを汚すから(わかんね)
・何出来るのか表現してないので使い方がへん(へんな使い方は混乱をまねく)

代わりの案

強く関連するクラスやインターフェースがあるならそっちに定数を定義しろ
enumがいけてる感じならenumにしろ
インスタンス化できないユーティリティクラスでもいいぞ
いちいちクラス名書くのだるかったらstatic importしようね

まとめ

namespaceを汚す、がわからん

定数を定義するのにインターフェースを作りたくなる気持ちはあったが、「強く関連するクラスやインターフェースがあるならそっちに定数を定義しろ」もしくは「enumをつかえ」は正しいと思う
ユーティリティクラスは便利なんだけどなんか気色悪いんだよな
なんだよユーティリティクラスってってなってしまう
StringUtilを作るんじゃなくてStringにメソッドを追加したらいいんじゃないかという気持ちになるというか
追加できないんだけど
かといって継承して拡張するのはたぶん混乱をまねく
SuperStringBuilderみたいの作ってもだいたい混在してわけわからんくなる(最終的に存在を忘れられて誰も使わなくなったあげく、誰だよこれ作ったの・・・ってなる)