1
resposta

Dúvida Boas Práticas

Esse trecho de código representa uma boa prática para quando o objeto buscado não foi encontrado?

@GetMapping("/{numero}")
    public ResponseEntity<DetalharNFSE> buscarNFSE(@PathVariable int numero) {
        var nota = repository.getReferenceByNumeroNFSE(numero);
        if(nota == null) {
            return ResponseEntity.notFound().build();
        }
        return ResponseEntity.ok(new DetalharNFSE(nota));
    }
1 resposta

Olá, Henrique!

Sua pergunta é muito relevante, pois as boas práticas de programação são essenciais para a manutenção e compreensão do código.

O trecho de código que você compartilhou é, de fato, um bom exemplo de como lidar com a situação em que um objeto buscado não é encontrado. Você está corretamente verificando se o objeto "nota" é nulo e, se for, está retornando um status HTTP 404 (Not Found) usando o método ResponseEntity.notFound().build(). Isso é uma boa prática, pois fornece feedback adequado ao cliente da API sobre o que aconteceu com sua solicitação.

No entanto, uma sugestão seria tratar a exceção diretamente no repositório. Em vez de retornar nulo, o método getReferenceByNumeroNFSE poderia lançar uma exceção personalizada quando a nota fiscal não é encontrada. Então, você poderia usar um manipulador de exceções (@ExceptionHandler) para capturar essa exceção e retornar o status 404. Isso tornaria o código do controlador mais limpo e a lógica de erro mais centralizada.

Por exemplo:

@GetMapping("/{numero}")
public ResponseEntity<DetalharNFSE> buscarNFSE(@PathVariable int numero) {
    try {
        var nota = repository.getReferenceByNumeroNFSE(numero);
        return ResponseEntity.ok(new DetalharNFSE(nota));
    } catch (NotaFiscalNaoEncontradaException ex) {
        return ResponseEntity.notFound().build();
    }
}

Espero ter ajudado e bons estudos!