Ich habe gerade PMD installiert, um mein Java-Projekt zu analysieren. Wirklich schönes Werkzeug, sehr zu empfehlen. Wie auch immer, ich habe ein paar Fehler, die sagen:
"Eine leere Methode in einer abstrakten Klasse sollte stattdessen abstrakt sein"
Ich habe die PMD-Dokumentation ausgecheckt und die Erklärung sagt:
als Entwickler kann sich auf diese leere Implementierung verlassen, anstatt den passenden zu programmieren
Ich glaube also, ich verstehe den Grund für diesen Codefehler, aber bedenke das folgende Szenario: Ich habe eine abstrakte Klasse namens Entity. Diese Klasse verfügt über eine boolesche Methode mit Standardimplementierung. (steuert, ob beim Löschen die zugehörigen Entitäten gelöscht werden sollen). Nur einige der abgeleiteten Klassen überschreiben dieses Standardverhalten als true.
Soll ich die Standardimplementierung entfernen und alle abgeleiteten Klassen zwingen, ihr Verhalten zu deklarieren? Denkst du wirklich, dass dieses Muster so schlecht ist?
Erläuterung: PMD behandelt eine Methode mit einer einzelnen Rückgabeanweisung als leer.
Ich denke, es ist nur eine Richtlinie. Es sagt Ihnen, dass Sie vielleicht Ihr Design überdenken möchten, aber wenn Ihr Design bereits vollkommen Sinn macht, gibt es keinen Grund, einer Software statt Ihrem Gehirn zu folgen.
Wenn Ihre Methode über eine Standardimplementierung verfügt, ist sie nicht leer? Oder vermisse ich etwas?
Für mich sieht eine leere Methode so aus:
%Vor%Tags und Links language-agnostic design-patterns design static-analysis