Code Smells: Refused Bequest e Long Parameter List

Integrantes: IURI DE LIMA MARQUES e THIAGO LARANGEIRA DE SOUZA

Refused Bequest (Herdeiro Recusado)

O Refused Bequest ocorre quando uma classe filha herda métodos ou atributos que não são utilizados ou são ignorados.

Consequências

Exemplo com Smell:

class Animal {
    public void comer() { ... }
    public void dormir() { ... }
    public void voar() { ... }
}
class Cachorro extends Animal {
    @Override
    public void voar() {
        throw new UnsupportedOperationException("Cachorros não voam!");
    }
}
    

Exemplo Refatorado:

class Animal {
    public void comer() { ... }
    public void dormir() { ... }
}
class Cachorro extends Animal { }
class Passaro extends Animal {
    public void voar() { ... }
}
    

Long Parameter List (Lista de Parâmetros Longa)

Esse smell ocorre quando um método recebe muitos parâmetros, tornando sua utilização confusa e de difícil manutenção.

Consequências

Exemplo com Smell:

class Relatorio {
    public void gerar(String titulo, String autor, String data,
                      String conteudo, String rodape, int numPaginas) {
        // lógica
    }
}
    

Exemplo Refatorado:

class Relatorio {
    private String titulo, autor, data, conteudo, rodape;
    private int numPaginas;

    public Relatorio(String titulo, String autor, String data,
                     String conteudo, String rodape, int numPaginas) {
        this.titulo = titulo;
        this.autor = autor;
        this.data = data;
        this.conteudo = conteudo;
        this.rodape = rodape;
        this.numPaginas = numPaginas;
    }
    public void gerar() {
        // lógica
    }
}