Domanda

Ho appena installato PMD per analizzare il mio progetto Java.Strumento davvero carino, altamente raccomandato.Ad ogni modo, ho ricevuto alcuni errori dicendo:

"Un metodo vuoto in una classe astratta dovrebbe invece essere astratto"

Ho controllato la documentazione PMD e la spiegazione dice:

poiché lo sviluppatore può fare affidamento su questa implementazione vuota anziché codificare quella appropriata

Quindi penso di comprendere il motivo dietro questo errore di stile del codice, ma considera il seguente scenario:Ho una classe astratta chiamata Entity.Questa classe ha un metodo booleano con implementazione predefinita.(controlla se eliminare le relative entità correlate al momento dell'eliminazione).Solo alcune delle classi derivate sovrascrivono questo comportamento predefinito su true.

Dovrei rimuovere l'implementazione predefinita e forzare tutte le classi derivate a dichiarare il loro comportamento?Pensi davvero che questo schema sia una pratica così sbagliata?

Una precisazione: PMD tratta un metodo con una singola istruzione return come vuoto.

È stato utile?

Soluzione

Penso che sia solo una linea guida.Ti dice quindi che potresti voler riconsiderare il tuo progetto, ma se il tuo progetto ha già perfettamente senso, non c'è motivo di obbedire a un software invece che al tuo cervello.

Altri suggerimenti

Se utilizzi Java 1.8, puoi creare Entity an interfaccia invece di una classe astratta e scrivi a predefinito implementazione per il tuo metodo in esso.

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

Puoi usare questo come riferimento:https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top