📋 Plano de Aula - Reutilização de Código em Java
📑 Identificação
| Campo | Informação |
|---|---|
| Disciplina | Desenvolvimento de Sistemas II |
| Professor | Ricardo Pires |
| Turma | 3º Técnico DS |
| Data | 16/03/2026 |
| Duração | 105 minutos |
| Aula | 02/06 |
🎯 Objetivos de Aprendizagem
Geral:
Desenvolver competências para aplicar princípio DRY (Don’t Repeat Yourself) na reutilização de código Java, eliminando duplicação e aumentando consistência de sistemas.
Específicos:
-
Conhecimento (Saber):
- Compreender impactos da duplicação de código
- Identificar violações do princípio DRY
- Conhecer estratégias de centralização de regras
-
Habilidades (Saber Fazer):
- Detectar código duplicado em sistemas existentes
- Extrair componentes reutilizáveis (validadores, utilitários)
- Implementar testes para validar reutilização
-
Atitudes (Saber Ser):
- Valorizar consistência comportamental em sistemas
- Desenvolver responsabilidade pela manutenibilidade do código
- Cultivar disciplina para centralizar regras de negócio
📚 Conteúdo Programático
1. Conceitos DRY (15 min)
- Princípio “Don’t Repeat Yourself”
- Custo econômico da duplicação de código
- Diferença entre duplicação acidental e estrutural
2. Identificação de Duplicação (15 min)
- Padrões comuns de código duplicado
- Validações espalhadas em múltiplos locais
- Inconsistências comportamentais em produção
3. Extração de Componentes Reutilizáveis (30 min)
- Live coding: EmailValidator centralizado
- Refatoração de sistema com duplicação
- Demonstração de consistência comportamental
4. Estratégias de Centralização (15 min)
- Classes utilitárias vs. componentes de domínio
- Métodos estáticos vs. instâncias
- Contratos de interface e fail-fast
5. Prática Orientada (30 min)
- Exercício 1: Identificar e refatorar duplicação
- Exercício 2: Implementar CpfValidator completo
- Code review: validação da qualidade de reuso
⏱️ Cronograma Detalhado
| Tempo | Duração | Atividade | Metodologia | Recursos |
|---|---|---|---|---|
| 19h00-19h15 | 15 min | Conceitos DRY + impactos | Expositiva dialogada | Slides, casos reais |
| 19h15-19h30 | 15 min | Identificação de duplicação | Demonstrativa | IDE, código problemático |
| 19h30-19h45 | 15 min | Live refatoração: EmailValidator | Demonstrativa | IDE, projetor |
| 19h45-20h00 | 15 min | Estratégias de centralização | Expositiva + exemplos | Slides, comparações |
| 20h00-20h15 | 15 min | INTERVALO | - | - |
| 20h15-20h30 | 15 min | Exercício 1: individual | Prática orientada | Computadores |
| 20h30-20h45 | 15 min | Exercício 2: CpfValidator | Prática individual | Computadores |
| 20h45-21h00 | 15 min | Code review e apresentações | Colaborativa | Projetor |
| 21h00-21h15 | 15 min | Consolidação e próximos passos | Síntese | Slides |
🎯 Estratégias Metodológicas
Problema-Solução-Aplicação (45 min):
- Problema real: Demonstrar bug de inconsistência em produção
- Solução prática: Live coding de refatoração DRY
- Aplicação: Exercícios progressivos de identificação e correção
Aprendizagem Baseada em Casos (30 min):
- Casos reais de sistemas com validação duplicada
- Análise comparativa before/after da refatoração
- Impactos mensuráveis (tempo de manutenção, bugs evitados)
Prática Reflexiva (30 min):
- Code review colaborativo das soluções propostas
- Discussão crítica sobre quando aplicar e quando não aplicar DRY
- Autoavaliação usando checklist de qualidade
🛠️ Recursos Didáticos
Tecnológicos:
- Computadores com ambiente Java configurado
- IDE com suporte a refatoração automática
- Projetor para live coding e comparações
- Acesso aos códigos de exemplo com problemas
Materiais:
- Código com duplicação real preparado
- Slides focados em benefícios práticos
- Exercícios progressivos estruturados
- Checklist de qualidade DRY
Ambientais:
- Espaço para circular entre carteiras durante exercícios
- Conectividade para compartilhamento de código
- Ambiente silencioso para concentração nas refatorações
📊 Avaliação
Formativa (Durante a aula):
- Observação direta na identificação de duplicação
- Qualidade da refatoração nos exercícios práticos
- Participação no code review colaborativo
Critérios de Avaliação:
| Competência | Insuficiente | Regular | Bom | Excelente |
|---|---|---|---|---|
| Identificação | Não identifica duplicação | Identifica óbvia | Identifica sistemática | Identifica sutil |
| Refatoração | Código quebrado/inconsistente | Funciona básico | Elimina duplicação | Solução elegante |
| Reutilização | Não generaliza | Resolve caso específico | Solução reutilizável | Solução extensível |
| Qualidade | Não segue padrões | Segue parcialmente | Aplica boas práticas | Antecipa evoluções |
Somativa (Pós-aula):
- Implementação completa do CpfValidator seguindo padrões
- Code review de sistema real identificando duplicações
- Preparação conceitual para refatoração segura (Aula 03)
🔄 Interdisciplinaridade
Conexões:
- Banco de Dados I: Normalização de dados vs. normalização de código
- Engenharia de Software: Manutenibilidade e evolução de sistemas
- Arquitetura de Software: Componentes reutilizáveis e modularização
Competências Transversais:
- Pensamento sistêmico: Impacto de duplicação em escala
- Qualidade e melhoria contínua: Refatoração como disciplina
- Trabalho em equipe: Código consistente facilita colaboração
📈 Continuidade
Pré-requisitos confirmados:
- Conceitos de código limpo da Aula 01
- Familiaridade com classes e métodos estáticos
- Compreensão básica de exceptions em Java
Preparação para próximas aulas:
- Aula 03: Componentes reutilizáveis serão base para refatoração segura
- Aula 04: Padrões de design aplicados a código DRY
- Projeto final: Arquitetura modular com reuso apropriado
Estudo dirigido:
- Identificar 3 casos de duplicação em código próprio/trabalho
- Implementar um validador adicional seguindo padrões da aula
- Ler: Clean Code (Cap. 3) sobre funções pequenas e reutilizáveis
🔧 Adaptações Planejadas
Para turma iniciante:
- +15 min em identificação visual de duplicação
- Exemplos mais simples (2-3 métodos vs. sistema complexo)
- Foco na dor: Demonstrar bug real antes de mostrar solução
- Template de validador parcialmente implementado
Para turma experiente:
- -5 min conceitos, +10 min em estratégias avançadas
- Discussão de trade-offs: Quando NÃO aplicar DRY
- Desafios extras: Como garantir adoção em equipe
- Análise crítica de sistemas reais do trabalho
Para turma mista:
- Duplas experiente + iniciante para code review
- Exercícios em camadas: Identificação (todos) → Refatoração (avançados)
- Apresentações diferenciadas por complexidade
📝 Observações Finais
Pontos críticos de atenção:
- Equilibrio: DRY vs. premature optimization
- Foco prático: Benefícios mensuráveis vs. dogma teórico
- Conexão real: Validação é universal, mas princípio se aplica além
Indicadores de sucesso da aula:
- 75%+ dos alunos identificaram corretamente duplicação no Exercício 1
- Discussão natural sobre “quando aplicar” vs “quando não aplicar”
- Perguntas conectando com sistemas que já conhecem
- Entendimento que DRY é meio para manutenibilidade, não fim
Plano B para problemas técnicos:
- Identificação visual: Usar marcadores coloridos em código impresso
- Refatoração no papel: Desenhar estrutura before/after
- Discussão de casos: Brainstorming de exemplos de duplicação real
Mensagem-chave da aula:
“Duplicação não é só código repetido - é decisão repetida, manutenção multiplicada e inconsistência garantida. DRY é sobre tomar decisão uma vez e confiar que funciona em todos os lugares.”