1
resposta

[Projeto] Desafio

Acabei de concluir o desafio proposto, meu projeto é o CepManager um sistema de gerenciamento de endereços via CEP, e adoraria receber o feedback de vocês!

No desenvolvimento, apliquei conceitos aprendidos nas aulas como:

  • Consumo de API REST com HttpClient (ViaCEP)
  • Serialização e desserialização de JSON com Gson
  • Persistência de dados em arquivo local (.json)
    E outros conceitos que já sabia como:
  • Streams e Lambdas para buscas e remoções na lista
  • Organização em camadas: Service, Repository e Client
  • Prevenção de duplicatas com equals() e hashCode() customizados

O sistema conta com um menu interativo onde é possível listar, cadastrar, buscar e remover endereços, mantendo um histórico salvo localmente.

Repositório: https://github.com/rogercf17/CepManager

1 resposta

Olá, Roger! Tudo bem?

Parabéns pela conclusão do desafio! O seu projeto CepManager demonstra uma excelente evolução, especialmente na forma como você integrou o consumo de serviços externos com a organização estruturada do código.

Sua aplicação reflete muito bem os pilares do curso Java: consumindo API, gravando arquivos e lidando com erros:

Análise Técnica da sua Implementação

  • Comunicação Externa: O uso do HttpClient é o padrão moderno em Java para lidar com requisições assíncronas e síncronas. Integrar com o ViaCEP é um excelente exercício de como lidar com dados que não controlamos.
  • Persistência e JSON: Utilizar o Gson para serialização garante que o seu histórico não se perca ao fechar o programa. É um passo fundamental para sair de aplicações que só vivem na memória RAM e ir para aplicações com estado persistente.
  • Arquitetura e Organização: Dividir em Service, Repository e Client mostra que você já está pensando em S.O.L.I.D. e na manutenção a longo prazo do código. Essa separação de responsabilidades facilita muito a criação de testes unitários futuramente.
  • Lógica de Negócio: Prevenir duplicatas com equals() e hashCode() é um detalhe técnico que separa iniciantes de desenvolvedores atentos, garantindo a integridade da sua lista de endereços.

Dica de Especialista: O "Lidando com Erros"

Como você está no capítulo de consolidação, uma ótima forma de levar o CepManager para o próximo nível é focar na robustez contra falhas externas.

Experimente implementar:

  1. Tratamento de CEP inexistente: O ViaCEP retorna um JSON com o campo "erro": true quando o CEP é válido em formato, mas não existe na base. Sua aplicação consegue identificar isso antes de tentar salvar?
  2. Exception Customizada: Crie uma classe CepInvalidoException que estenda RuntimeException. Lance-a quando o usuário digitar menos ou mais de 8 dígitos, e trate isso no seu Menu com um try-catch amigável para o usuário.

Visualizando o Fluxo de Dados

Para entender como sua arquitetura em camadas interage com a API, imagine o seguinte fluxo:

Roger, excelente iniciativa em compartilhar o repositório! Você sentiu que a parte de manipular arquivos JSON com o Gson foi mais tranquila do que lidar com as possíveis interrupções de rede durante a requisição à API?