8

Javaプロジェクトを分析するためにPMDをインストールしました。本当に素晴らしいツール、強くお勧めします。とにかく、私は言っているいくつかのエラーがありました:

「抽象クラスの空のメソッドは、代わりに抽象である必要があります」

PMDのドキュメントを確認したところ、説明には次のように書かれています。

開発者は適切な実装をコーディングするのではなく、この空の実装に依存する可能性があるため

したがって、このコードスタイルエラーの背後にある理由は理解できたと思いますが、次のシナリオを検討してください。Entityという抽象クラスがあります。このクラスには、デフォルトの実装を持つブールメソッドがあります。(削除時に関連するエンティティを削除するかどうかを制御します)。派生クラスのいくつかだけが、このデフォルトの動作をtrueにオーバーライドします。

デフォルトの実装を削除して、すべての派生クラスに動作を宣言させる必要がありますか?このパターンは本当に悪い習慣だと思いますか?

明確化: PMDは、単一のreturnステートメントを持つメソッドを空として扱います。

4

2 に答える 2

10

単なる目安だと思います。それはあなたがあなたのデザインを再考したいかもしれないようにあなたに告げます、しかしあなたのデザインがすでに完全に理にかなっているなら、あなたの頭脳の代わりにソフトウェアに従う理由はありません。

于 2009-04-16T10:45:32.300 に答える
0

Java 1.8を使用している場合は、Entityを抽象クラスの代わりにインターフェースにして、メソッドのデフォルトの実装をその中に記述することができます。

public interface Entity {
    default boolean yourMethod() {
        //default implementation ...
    }
}

これを参照用に使用できます: https ://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

于 2016-09-01T12:54:59.737 に答える