🚀 Oferta especial: 60% OFF no CrazyStack - Últimas vagas!Garantir vaga →
Java

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

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

CrazyStack
15 min de leitura
JavaDesafio TécnicoEstágio

Por que isso é importante

Participar de processos seletivos exige mais do que apenas saber programar. Um bom desafio técnico é a chance de demonstrar organização, domínio da linguagem e capacidade de pensar como desenvolvedor. Este artigo explora um case real para mostrar como você pode se destacar com boas práticas.

Apresentação do Desafio

O desafio proposto consistia em desenvolver um leitor de arquivos CSV em Java para uma vaga de estágio. O programa deveria ler todos os arquivos de um diretório chamado "pendentes", validar conteúdo e estrutura e então movê-los para diretórios "validado" ou "invalidado", com base 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 propôs que cada CSV contenha 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 implementou todo o processamento dentro do método main, o que tornou o código extenso, repetitivo, e de difícil manutenção. Blocos similares de código apareceram múltiplas vezes desnecessariamente, especialmente na leitura e nas validações.

⚠️Atenção

Escrever todo o código dentro do método main é um dos principais erros de iniciantes na linguagem Java. Modularização é fundamental.

Refatoração em Módulos

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

Constantes e Reutilização

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

ℹ️Dica

Utilize a biblioteca Paths da API NIO do Java para 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 utilizando try-with-resources que já se encarrega disso automaticamente.

Formatando as Datas

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

Organização do Projeto

Separar os arquivos em pacotes como entities e application mostra uma preocupação com arquitetura, mesmo em projetos pequenos. Isso permite crescimento da aplicação de forma estruturada.

Abordagem do Code Review

O enfoque do conteúdo foi fazer um code review comentado, algo raramente explorado com profundidade. Avaliar um projeto pronto pode ensinar 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

Onde Estudar Mais

A plataforma Rocketseat oferece uma série de cursos voltados a desenvolvimento backend e aplicações modernas em Java com Spring Boot.

Conteúdos Adicionais da Plataforma

Na formação Java da Rocketseat, você terá acesso a 220 aulas, 9 quizzes e 3 projetos práticos, que abordam desde fundamentos até padrões de projeto e integrações com front-end.

Certificação e Projetos Práticos

Ao final da formação, o aluno recebe certificado, participa de desafios NLW e conta com uma comunidade ativa no Discord, inclusive sobre desafios como esse.

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 desenvolvedor.

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

Domine React e Node com o CrazyStack

Aprenda técnicas avançadas de React com nosso curso completo