📋 Plano de Aula - Reutilização de Código em Java

📑 Identificação

CampoInformação
DisciplinaDesenvolvimento de Sistemas II
ProfessorRicardo Pires
Turma3º Técnico DS
Data16/03/2026
Duração105 minutos
Aula02/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:

  1. 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
  2. Habilidades (Saber Fazer):

    • Detectar código duplicado em sistemas existentes
    • Extrair componentes reutilizáveis (validadores, utilitários)
    • Implementar testes para validar reutilização
  3. 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

TempoDuraçãoAtividadeMetodologiaRecursos
19h00-19h1515 minConceitos DRY + impactosExpositiva dialogadaSlides, casos reais
19h15-19h3015 minIdentificação de duplicaçãoDemonstrativaIDE, código problemático
19h30-19h4515 minLive refatoração: EmailValidatorDemonstrativaIDE, projetor
19h45-20h0015 minEstratégias de centralizaçãoExpositiva + exemplosSlides, comparações
20h00-20h1515 minINTERVALO--
20h15-20h3015 minExercício 1: individualPrática orientadaComputadores
20h30-20h4515 minExercício 2: CpfValidatorPrática individualComputadores
20h45-21h0015 minCode review e apresentaçõesColaborativaProjetor
21h00-21h1515 minConsolidação e próximos passosSínteseSlides

🎯 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ênciaInsuficienteRegularBomExcelente
IdentificaçãoNão identifica duplicaçãoIdentifica óbviaIdentifica sistemáticaIdentifica sutil
RefatoraçãoCódigo quebrado/inconsistenteFunciona básicoElimina duplicaçãoSolução elegante
ReutilizaçãoNão generalizaResolve caso específicoSolução reutilizávelSolução extensível
QualidadeNão segue padrõesSegue parcialmenteAplica boas práticasAntecipa 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:

  1. Equilibrio: DRY vs. premature optimization
  2. Foco prático: Benefícios mensuráveis vs. dogma teórico
  3. 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.”