8

Acabo de instalar PMD para analizar mi proyecto Java. Muy buena herramienta, muy recomendable. De todas formas, tengo algunos errores diciendo:Método vacío en una clase abstracta

"Un método vacío en una clase abstracta debe ser abstracta lugar"

yo fuimos documentación PMD y la explicación dice:

como desarrollador puede confiar en esta implementación vacía en lugar de codificar la apropiada

Así que creo que entiendo la razón detrás de este error de estilo de código, pero considere la siguiente situación: Tengo una clase abstracta llamada Entidad. Esta clase tiene un método booleano con implementación predeterminada. (controla si eliminar sus entidades relacionadas al eliminarlas). Solo algunas de las clases derivadas anulan este comportamiento predeterminado a verdadero.

¿Debo eliminar la implementación predeterminada y forzar a todas las clases derivadas a declarar su comportamiento? ¿De verdad crees que este patrón es una mala práctica?

Aclaración: PMD trata un método con declaración de devolución única como vacía.

Respuesta

9

Creo que es sólo una guía. Te lo dice para que puedas reconsiderar tu diseño, pero si tu diseño ya tiene perfecto sentido, no hay razón para obedecer un software en lugar de tu cerebro.

0

Cuando su método tiene una implementación predeterminada, ¿no está vacío? ¿O extraño algo?

Para mí, un método vacío se parece a esto:

public void EmptyMethod() 
{} 
+5

así, el PMD trata de un método que sólo devuelve booleano o nulo como demasiado vacía – LiorH

0

Si se encuentra en Java 1.8, puede hacer que una interfaz Entidad en lugar de una clase abstracta y escribir una aplicaciónpor defecto para el método en ella.

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

Se puede utilizar esta referencia: https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html

Cuestiones relacionadas