método vazio em uma classe abstrata
-
09-09-2019 - |
Pergunta
Acabo de instalar PMD para analisar o meu projeto Java. Muito bom ferramenta, altamente recomendado. De qualquer forma, eu tenho alguns erros dizendo:
"Um método vazio em uma classe abstrata deve ser abstrato vez"
Eu verifiquei a documentação PMD ea explicação diz:
como desenvolvedor pode contar com esta implementação vazia em vez de código o apropriado
Então, eu acho que entendo a razão por trás deste erro estilo do código, mas considere o seguinte cenário: Eu tenho uma classe abstrata chamada Entidade. Essa classe tem um método boolean com a implementação padrão. (Controla se apagar suas entidades relacionadas sobre supressão). Apenas algumas das classes derivadas substituir esse comportamento padrão para true.
Devo remover a implementação padrão e forçar todas as classes derivando para declarar o seu comportamento? Você realmente acha que este padrão é uma prática tão má?
Esclarecimento:. PMD trata de um método com instrução de retorno única como vazio
Solução
Eu acho que é apenas uma orientação. Diz-lhe para que você pode querer reconsiderar seu projeto, mas se o seu design já faz todo o sentido, não há nenhuma razão para obedecer a um software, em vez de seu cérebro.
Outras dicas
Se você estiver em Java 1.8, você pode fazer Entidade um Interface em vez de uma classe abstrata e escrever um padrão implementação para o seu método nela.
public interface Entity {
default boolean yourMethod() {
//default implementation ...
}
}
Você pode usar este para referência: https://docs.oracle.com/javase/tutorial/java/IandI /defaultmethods.html