ここでこの記事を読んだばかりです: http://hamletdarcy.blogspot.com/2008/04/10-best-idea-inspections-youre-not.html、特に最後の部分で、自分のコードについて考えさせられました。特にアドバイス:
オブジェクト内のどのフィールドにも依存しないパブリック メソッドがオブジェクトに対して行っていることは、一体何なのでしょうか? これは確かにコードの匂いです。問題は、検査の「自動修正」が static キーワードを適用することです。いやー。それはあなたがしたいことではありません。オブジェクトの状態に依存しないパブリック メソッドは、明確に宣言された憲章を持つオブジェクトの一部になることはできません。まとまりがなく、別の場所に配置する必要があります。したがって、メソッドがプライベートの場合は自動修正を受け入れますが、メソッドがパブリックの場合は受け入れません。
問題のコードは、基本的にオブジェクト トランスフォーマーです。型 A のオブジェクトを受け取り、それを別の型に変換します。
私の階層は次のようなものです:
インターフェース ObjectTransformer -> GenericObjectTransformer
この下では、GenericObjectTransformer が ObjectTransformerA と ObjectTransformerB によって拡張されます。
現在、ObjectTransformerA と ObjectTransformerB の両方でいくつかの機能が必要ですが、実際には GenericObjectTransformer のインスタンス変数に依存していないため、GenericObjectTransformer の保護された静的メソッドです。
これは上記のルールに違反していますか? 明らかに、これはパブリックではなく保護されていますが、それでもクラス自体とは何の関係もないクラスの外部からアクセス可能なメソッドですか?
何かご意見は?