💻 Projeto Prático - Aula 01

🎯 Objetivo

Este projeto contém códigos executáveis que demonstram os conceitos de boas práticas de programação em Java abordados na aula.


📁 Estrutura do Projeto

projeto-pratico/
├── src/
│   ├── main/java/aula01/
│   │   ├── ExemploAntes.java          # Código "ruim" - antes da refatoração
│   │   ├── ExemploDepois.java         # Código "limpo" - após refatoração
│   │   ├── ExercicioRefatorar.java    # Exercício para o aluno praticar
│   │   └── GabaritoExercicios.java    # Soluções dos exercícios
│   └── test/java/aula01/
│       └── ExemploDepoisTest.java     # Testes JUnit para validação
├── README.md                          # Este arquivo
└── pom.xml                            # Configuração Maven (opcional)

Como Executar

Opção 1: Compilação Manual

# Navegar até a pasta projeto-pratico
cd projeto-pratico
 
# Compilar todos os arquivos Java
javac -d . src/main/java/aula01/*.java
 
# Executar exemplos (não têm main, são classes de exemplo)
# Para testar, use os métodos nos testes ou crie um main
 
# Compilar testes (se tiver JUnit configurado)
javac -cp .:junit-jupiter-api-5.8.2.jar -d . src/test/java/aula01/*.java

Opção 2: IDE (Recomendado)

VS Code:

  1. Abrir pasta projeto-pratico no VS Code
  2. Instalar extensão “Extension Pack for Java”
  3. Clicar direito nos arquivos → “Run Java”

IntelliJ IDEA:

  1. Import Project → Selecionar pasta projeto-pratico
  2. Configurar como “Java Project”
  3. Run → Run ‘ClassName’

Eclipse:

  1. File → Import → Existing Projects into Workspace
  2. Selecionar pasta projeto-pratico
  3. Right-click → Run As → Java Application

🧪 Executando os Testes

Pré-requisitos:

  • JUnit 5 (Jupiter) configurado na IDE ou baixado manualmente

Via IDE:

  • Clicar direito em ExemploDepoisTest.java
  • Selecionar “Run as JUnit Test”

Via Maven (se configurado):

mvn test

Via linha de comando:

# Baixar JUnit se necessário
wget https://repo1.maven.org/maven2/org/junit/platform/junit-platform-console-standalone/1.9.2/junit-platform-console-standalone-1.9.2.jar
 
# Compilar e executar testes
java -cp .:junit-platform-console-standalone-1.9.2.jar org.junit.platform.console.ConsoleLauncher --scan-classpath

📚 Descrição dos Arquivos

📄 ExemploAntes.java

Propósito: Demonstra código com problemas típicos

  • Nomes de métodos e variáveis unclear
  • Formatação inconsistente
  • Lógica confusa que gera bug

Como usar: Analisar e identificar problemas antes de ver a solução

📄 ExemploDepois.java

Propósito: Versão refatorada com boas práticas

  • Nomenclatura clara e descritiva
  • Formatação consistente
  • Comentários úteis quando necessário
  • Lógica explícita e testável

Como usar: Comparar com versão “antes” para entender melhorias

📄 ExercicioRefatorar.java

Propósito: Código para o aluno praticar refatoração

  • Classe C com método calc confuso
  • Exercício hands-on da aula

Como usar:

  1. Analisar problemas
  2. Refatorar aplicando boas práticas
  3. Compare com gabarito

📄 GabaritoExercicios.java

Propósito: Soluções dos exercícios propostos

  • Classe Calculadora refatorada
  • Método proximaPagina com comentários apropriados

Como usar: Consultar após tentar resolver os exercícios

📄 ExemploDepoisTest.java

Propósito: Testes automatizados para validação

  • Testes unitários com JUnit 5
  • Cobertura dos métodos refatorados
  • Demonstra como testar código limpo

Como usar: Executar para validar implementações


🎯 Exercícios Práticos

🔥 Exercício 1: Análise Comparativa (15 min)

  1. Abra ExemploAntes.java e ExemploDepois.java lado a lado
  2. Liste 3 melhorias específicas da refatoração
  3. Explique o impacto prático de cada melhoria

💻 Exercício 2: Refatoração Guiada (20 min)

  1. Copie o conteúdo de ExercicioRefatorar.java
  2. Refatore seguindo princípios da aula:
    • Renomear classe e método
    • Melhorar nomes de parâmetros
    • Adicionar tratamento de erro
    • Documentar com JavaDoc
  3. Compare com GabaritoExercicios.java

🧪 Exercício 3: Criação de Testes (25 min)

  1. Crie uma classe CalculadoraTest.java
  2. Escreva testes para o método calcular() do gabarito
  3. Inclua casos de:
    • Operações válidas (adição, subtração)
    • Operação inválida (deve lançar exception)
    • Valores extremos (0, negativos)

🔧 Troubleshooting

❌ “Comando ‘javac’ não reconhecido”

  • Problema: Java não está instalado ou configurado no PATH

  • Solução:

    # Verificar instalação
    java -version
     
    # Se não instalado, baixar do site oficial Oracle
    # Adicionar JAVA_HOME ao PATH do sistema

❌ “Cannot find symbol” nos imports

  • Problema: JUnit não está configurado
  • Solução: Use IDE com suporte automático ao JUnit ou baixe JARs manualmente

❌ “Main method not found”

  • Problema: Classes de exemplo não têm método main
  • Solução: Create uma classe separada para testar:
    public class TesteExemplos {
        public static void main(String[] args) {
            ExemploDepois exemplo = new ExemploDepois();
            System.out.println(exemplo.calcularSubtotal(5, 10, true));
        }
    }

❌ Testes não executam

  • Problema: JUnit 5 requer Java 8+
  • Solução: Verificar versão do Java e usar JUnit compatível

📈 Próximos Passos

Para aprofundar o aprendizado:

  1. Experimente variações:

    • Refatore outros códigos seus aplicando os conceitos
    • Crie novos testes para validar refatorações
  2. Explore ferramentas:

    • Configure Checkstyle para validar automaticamente
    • Use SonarLint para detectar problemas de qualidade
  3. Aplique em projetos reais:

    • Pegue código de trabalho/estudo e refatore
    • Documente o processo before/after
  4. Prepare-se para próxima aula:

    • Identificar código duplicado em seus projetos
    • Estudar conceitos básicos de DRY (Don’t Repeat Yourself)

📞 Suporte

Para dúvidas técnicas:

Para contribuições:

  • Achou um bug no código? Reporte!
  • Tem sugestão de melhoria? Compartilhe!
  • Criou exercício interessante? Contribua!

Validação do Ambiente

Execute este checklist para certificar que está tudo funcionando:

  • javac --version retorna versão 8 ou superior
  • Consegue compilar ExemploDepois.java sem erros
  • IDE reconhece e importa projeto automaticamente
  • Testes JUnit executam com sucesso
  • Console mostra output esperado nos exemplos

Se algum item falhou: Consulte seção Troubleshooting ou procure ajuda na monitoria.

0 items neste arquivo.