📝 Exercícios Práticos - Aula 01

💻 Duração: 30 minutos


🎯 Objetivos

Ao completar estes exercícios, você será capaz de:

  • Identificar problemas de naming em código legacy
  • Refatorar código aplicando boas práticas
  • Escrever comentários úteis que expliquem contexto

📋 Exercício 1: Limpeza de Código (15 min)

Problema:

Refatore o código abaixo aplicando boas práticas de naming, formatação e estruturação:

public class C {
    public double calc(double v1, double v2, String t) {
        if(t.equals("add")) return v1+v2;
        if(t.equals("sub")) return v1-v2;
        return 0;
    }
}

Requisitos:

  • Nome da classe deve indicar claramente a responsabilidade
  • Nome do método deve indicar a ação
  • Parâmetros devem ter nomes descritivos
  • Formatação com indentação consistente (4 espaços)
  • Tratamento de caso de operação inválida
  • Documentação JavaDoc apropriada

Dicas de Implementação:

  1. Pense no domínio: que tipo de classe seria essa?
  2. Use verbos para métodos, substantivos para variáveis
  3. Compare strings usando .equals() com literal primeiro
  4. Considere lançar exception para casos inválidos

📋 Exercício 2: Comentários Úteis (15 min)

Problema:

Adicione comentários apropriados ao código abaixo. Atenção: comente apenas o que precisa de contexto!

public int proximaPagina(int paginaAtual, int totalItens) {
    return (paginaAtual * 10 < totalItens) ? paginaAtual + 1 : paginaAtual;
}

Requisitos:

  • Explicar o contexto da paginação (quantos itens por página)
  • Clarificar o comportamento quando não há mais páginas
  • Documentar parâmetros e valor de retorno
  • NÃO comentar o óbvio (como “retorna um int”)

Perguntas para Reflexão:

  • Por que o número 10 está hardcoded?
  • O que acontece quando totalItens é 0?
  • Como outro desenvolvedor saberia que a paginação começa em 1?

⏱️ Atividade Rápida Final (5 min)

Escolha UM dos exercícios acima e:

  1. Implemente sua solução
  2. Prepare apresentação de 2 minutos
  3. Explique por que suas escolhas são melhores

Critérios de Avaliação:

  • Clareza: código é auto-explicativo?
  • Consistência: segue padrões estabelecidos?
  • Manutenibilidade: outro dev consegue modificar facilmente?

🎯 Checklist de Conclusão

Antes de finalizar, verifique:

  • Os nomes indicam claramente a intenção?
  • A indentação está consistente em 4 espaços?
  • O código é compreensível sem “adivinhação”?
  • Os comentários explicam o porquê, não o o quê?
  • Casos edge estão tratados apropriadamente?

🔗 Arquivos Relacionados

  • Código para refatorar: projeto-pratico/src/main/java/aula01/ExercicioRefatorar.java
  • Gabarito completo: projeto-pratico/src/main/java/aula01/GabaritoExercicios.java
  • Testes de validação: projeto-pratico/src/test/java/aula01/ExemploDepoisTest.java

💡 Próximos Passos

Estes exercícios preparam você para:

  • Aula 02: Como evitar duplicação de código (DRY)
  • Aula 03: Refatoração segura com testes
  • Projetos reais: Manutenção de código legacy