Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Retorno de uma função booleana no if

Olá pessoal, tudo bem?

Vi o código da aula 4 - Otimizando consultas e me deparei com esse código

public void validar(SolicitacaoAdocaoDto dto){
    boolean petTemAdocaoEmAndamento = adocaoRepository
                .existsByPetIdAndStatus(dto.idPet(), StatusAdocao.AGUARDANDO_AVALIACAO);
    
    if(petTemAdocaoEmAndamento){
        throw new Validacaoexception(...);
    }

Quando vejo um método que retorna boolean para uma variável e depois um if com essa variável, sempre me dá uma vontade de tirar a variável e colocar o método direto no if, ex:

public void validar(SolicitacaoAdocaoDto dto){
    if (adocaoRepository
                .existsByPetIdAndStatus(dto.idPet(),
                StatusAdocao.AGUARDANDO_AVALIACAO)){
        throw new Validacaoexception(...);
    }

Isso é considerado algo bom ou ruim, na minha cabeça estou tirando uma variável desnecessário e parece que consigo ler melhor assim.

Alguém conseguiria me responder se essa ação é uma boa prática ou apenas um vício que deveria ser evitado?

Agradeço desde já!!

1 resposta
solução!

Olá, Igor! Tudo bem?

Sua pergunta é muito pertinente e a resposta é: depende. Ambas as abordagens que você mencionou são válidas e têm seus próprios méritos, dependendo do contexto.

No exemplo que você citou, a variável petTemAdocaoEmAndamento foi usada para armazenar o resultado da chamada do método existsByPetIdAndStatus(). Isso torna o código mais legível, pois a variável tem um nome significativo que indica claramente o que está sendo verificado no if. Além disso, se esse valor precisasse ser usado em outro lugar, já teríamos ele armazenado em uma variável.

Por outro lado, a abordagem de chamar o método diretamente no if, como você sugeriu, tem a vantagem de ser mais concisa. Isso pode tornar o código mais limpo, especialmente se o resultado da chamada do método não for usado em nenhum outro lugar.

Em termos de desempenho, não há diferença significativa entre as duas abordagens. A escolha entre uma ou outra geralmente se resume a uma questão de estilo de codificação e preferência pessoal.

No contexto da aula, acredito que a escolha de usar uma variável pode ter sido feita para tornar o código mais fácil de entender para os estudantes, já que o nome da variável ajuda a explicar o que está acontecendo.

Espero ter ajudado e bons estudos!