1
resposta

Validacao com o proprio Optional

Olá,

Fiz a pergunta na aula anterior e acabou tendo parte da resposta na seguinte. A verificacao se o erro de fato existe. Nesse caso como ja tem a pergunta do Bruno antes da minha, o proprio Optional seria uma forma de validacao para evitar duas consultas ou ifs desnecessarios.

ou usando a opcao .orElseThrow como coloquei o codigo na discussão da aula anterior, ja disparando a exception, ou usando um .isPresent() caso queira manter o uso do IF.

//Abordagem com if
public void agendar(DadosAgendamentoConsulta dados) {
    var paciente = pacienteRepository.findById(dados.getPacienteId());
    var medico = medicoRepository.findById(dados.getMedicoId());

    if(!paciente.isPresent()) {
        throw new ValidacaoException("Paciente não cadastrado");
    }

    if(!medico.isPresent()) {
        throw new ValidacaoException("Medico nao cadastrado");
    }

    var consulta = new Consulta(null, medico.get(), paciente.get(), dados.data());
}
//Abordagem sem if
public void agendar(DadosAgendamentoConsulta dados) {
    var paciente = pacienteRepository.findById(dados.getPacienteId())
             .orElseThrow(() -> throw new ValidacaoException("Paciente não cadastrado"));

    var medico = medicoRepository.findById(dados.getMedicoId())
             .orElseThrow(() -> throw new ValidacaoException("Medico nao cadastrado"));

    var consulta = new Consulta(null, medico, paciente, dados.data());
}
1 resposta

Olá Thiago,

O uso do Optional pode ser uma boa opção para evitar a necessidade de ifs desnecessários em seu código. Na primeira abordagem que você apresentou, é necessário fazer a verificação com if para saber se o Optional contém um valor. Já na segunda abordagem, é possível utilizar o método .orElseThrow para disparar uma exceção caso o Optional esteja vazio.

Além disso, é possível utilizar o método .isPresent() para verificar se o Optional contém um valor antes de utilizá-lo, caso você prefira manter o uso do if.

A escolha entre as abordagens vai depender do seu estilo de programação e do contexto em que o código será utilizado. Mas de forma geral, o uso do Optional pode deixar o código mais limpo e legível.

Espero ter ajudado e bons estudos!