Frage

Ich habe gerade PMD installiert mein Java-Projekt zu analysieren. Wirklich nettes Tool, sehr zu empfehlen. Wie auch immer, ich habe ein paar Fehler zu sagen:

  

„Eine leere Methode in einer abstrakten Klasse sollte stattdessen abstrakt sein“

ich ausgecheckt PMD Dokumentation und die Erklärung sagt:

  

als Entwickler auf dieser leeren Implementierung verlassen kann, anstatt Code, um die geeigneten

Also ich denke, ich den Grund hinter diesem Code-Stil Fehler verstehen, aber das folgende Szenario vor: Ich habe eine abstrakte Klasse namens Entity. Diese Klasse hat eine boolean-Methode mit Standardimplementierung. (Steuert, ob seine verbundenen Unternehmen beim Löschen löschen). Nur wenige der abgeleiteten Klassen außer Kraft setzen dieses Standardverhalten zu wahren.

Soll ich die Standardimplementierung entfernen und alle Ableiten Klassen zwingen, ihr Verhalten zu erklären? Glauben Sie wirklich, dieses Muster so eine schlechte Praxis ist?

Zur Verdeutlichung:. PMD behandelt ein Verfahren mit Einzel return-Anweisung als leer

War es hilfreich?

Lösung

Ich denke, es ist nur ein Richtwert. Es sagt Ihnen, so dass Sie vielleicht Ihr Design zu überdenken, aber wenn Sie Ihr Design bereits durchaus Sinn macht, gibt es keinen Grund, eine Software anstelle Ihrem Gehirn zu gehorchen.

Andere Tipps

Wenn Sie auf Java 1.8, können Sie machen Entity eine Schnittstelle anstelle einer abstrakten Klasse und schreiben Sie eine Standard Implementierung für Ihre Methode.

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

Sie können diese als Referenz verwenden: https://docs.oracle.com/javase/tutorial/java/IandI /defaultmethods.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top