Pular para o conteúdo
Java

Desafio técnico de estágio em Java com leitura

Um walkthrough completo sobre um desafio real de estágio envolvendo leitura e validação de arquivos CSV com Java.

Por que isso é importante

Desafio técnico de estágio em Java com leitura. Um walkthrough completo sobre um desafio real de estágio envolvendo leitura e validação de arquivos CSV com Java.

Apresentação do Desafio

O desafio proposto era desenvolver um leitor de arquivos CSV em Java pra uma
vaga de estágio. O programa tinha que ler todos os arquivos de um diretório chamado
"pendentes", validar conteúdo e estrutura e depois mover eles pros diretórios "validado" ou
"invalidado", baseado nos critérios definidos.

Objetivos Técnicos

Os principais objetivos do desafio são avaliar o conhecimento do candidato em:

  1. Manipulação de arquivos: abertura, leitura e escrita.
  2. Validação de dados: número de colunas, campos obrigatórios.
  3. Organização de diretórios: mover arquivos corretamente.
  4. Boas práticas: clareza, reutilização e estruturação do código.

Leitura e Validação de Arquivos

O projeto pediu que cada CSV tenha as colunas: número da mesa, número do cliente,
data da venda, e valor da venda. A validade de cada linha depende da presença correta
desses campos.

Execução Procedural Inicial

O autor original colocou todo o processamento dentro do método main, o que deixou o
código extenso, repetitivo, e difícil de manter. Blocos parecidos de código
apareceram várias vezes sem necessidade, principalmente na leitura e nas
validações.

Atenção

Escrever todo o código dentro do método main é um dos principais erros de quem tá começando
em Java. Modularização faz toda diferença.

Refatoração em Módulos

Pra melhorar a legibilidade e manutenção, o código foi dividido em métodos com
responsabilidades claras: um pra leitura, outro pra validação e outro pra
movimentação de arquivos. Isso simplifica testes e futuras evoluções no código.

Constantes e Reutilização

Strings tipo diretórios e delimitadores foram extraídas pra constantes. Isso evita
repetição e facilita adaptações, por exemplo, suportar diferentes sistemas operacionais
ou mudanças no formato CSV.

Dica

Use a biblioteca Paths da API NIO do Java pra manipulação de
caminhos de forma agnóstica ao sistema operacional.

Tratamento de Exceções

Um dos pontos mais críticos era o uso de blocos try repetidos e o fechamento explícito
do BufferedReader, mesmo usando try-with-resources que já faz isso
automaticamente.

Formatando as Datas

O uso repetitivo do new SimpleDateFormat podia ser substituído por
uma instância única num escopo global. Isso economiza memória e deixa o
código mais limpo.

Organização do Projeto

Separar os arquivos em pacotes tipo entities e application mostra preocupação com arquitetura, mesmo em projetos
pequenos. Isso deixa a aplicação crescer de forma estruturada.

Abordagem do Code Review

O foco do conteúdo foi fazer um code review comentado, algo raramente explorado com
profundidade. Avaliar um projeto pronto ensina tanto quanto desenvolver do zero.

Principais Melhorias Sugeridas

  1. Extrair constantes: separadores, nomes de pastas e formato de
    data devem ser reutilizáveis.
  2. Dividir responsabilidades: criar métodos auxiliares para
    leitura, validação e movimentação de arquivos.
  3. Evitar repetição de código: consolidar comportamentos comuns.
  4. Adotar boas bibliotecas: como java.nio.file.Paths e
    pattern-matching de erros com exceções personalizadas.

Bibliotecas e Ferramentas Utilizadas

Java JDK 8+

Ambiente de execução e compilação

IntelliJ IDEA

IDE utilizada para estruturação e testes

java.nio.file

API moderna para manipulação de arquivos e diretórios

Conclusão

Desafios técnicos são mais do que entregar código funcional: são oportunidades reais de
mostrar qualidade técnica, profissionalismo e organização. A forma como você entrega diz
muito sobre quem você é como programador.

Checklist de Implementação

  • Projeto inicial entendido e reproduzido
  • Refatoração modular aplicada
  • Uso de constantes para configuração
  • Validações encapsuladas por responsabilidade
  • Code review com sugestões práticas registrado