cami-la / collections-java-api-2023

Este repositório é referente ao curso "Collection Framework API Java" e é uma valiosa contribuição para a comunidade de desenvolvedores Java, fornecendo exemplos práticos e recursos educacionais relacionados à poderosa API de coleções da linguagem Java.
https://web.dio.me/course/conhecendo-collections-java/learning/c5d6f4e1-6d05-4eea-93d8-d292c708999f
822 stars 595 forks source link

Clean Code #40

Closed dcasimiro89 closed 9 months ago

dcasimiro89 commented 9 months ago

Boa tarde, Camila. Tudo bem?

Uma dúvida na implementação do seu código abaixo:

public void removerConvidadoPorCodigoConvite(int codigoConvite) {
        Convidado convidadeRemovido = null;
        if (!convidadoSet.isEmpty()) {
            for (Convidado c : convidadoSet) {
                if (c.getCodigoConvite() == codigoConvite) {
                    convidadeRemovido = c;
                    break;
                    convidadoSet.remove(convidadeRemovido);
                } else {
                    throw new RuntimeException("Conjunto vazio");
                }
            }
        }
}

No quesito clean code (que ouço é bem importante), teria problema em implementar o código desta forma?

public void removerConvidadoPorCodigoConvite(int codigoConvite) {
        if (!convidadoSet.isEmpty()) {
            for (Convidado c : convidadoSet) {
                if (c.getCodigoConvite() == codigoConvite) {
                    convidadoSet.remove(c);
                    break;
                }
            }
        } else {
            throw new RuntimeException("Lista vazia");
        }
}

*Sem a necessidade de ter criado uma variável do tipo Convidado, e remover direto pelo conjunto.

Desde já, muito obrigado!

cami-la commented 9 months ago

Oi, @dcasimiro89. Tudo certinho?

Então, o objeto Convidado convidadeRemovido = null; ele serve para fazer uma verificação, caso o codigoConvite não seja encontrado no Set. Exemplo:

public void removerConvidadoPorCodigoConvite(int codigoConvite) {
    Convidado convidadoParaRemover = null;
    if (!convidadosSet.isEmpty()) {
        for (Convidado c : convidadosSet) {
            if (c.getCodigoConvite() == codigoConvite) {
                convidadoParaRemover = c;
                break;
            }
        }

        if (convidadoParaRemover != null) {
            convidadosSet.remove(convidadoParaRemover);
        } else {
            System.out.println("Convidado não encontrado com o código de convite: " + codigoConvite);
        }
    } else {
        throw new RuntimeException("O conjunto está vazio!");
    }
}

Assim, eu verifico tanto se o Set está vazio, e se não estiver vazio, talvez o código do convite informado não seja encontrado, aí podemos fazer uma outra verificação. Nesse caso, não é questão de Clean Code, é questão de segurança do código mesmo.

De qualquer forma, muito boa sua abordagem, viu? Parabéns! Vira e mexe talvez tenha um código redundante, mas é só questão didática mesmo. Para que os Devs iniciantes consigam compreender melhor alguns códigos e tals. (:

dcasimiro89 commented 9 months ago

Entendi. Muito obrigado, sua didática é ótima e de fácil entendimento para nós iniciantes.