Skills: Skill de Refatoração
Última atualização: 2026-08-31
Refatorar não é reescrever — é melhorar a estrutura do código sem alterar o comportamento. Skills tornam a refatoração metódica.
1. Identificação de code smells
(1) Code smells comuns
| Smell | Padrão Grep | Risco |
|---|---|---|
| Função longa | Linhas > 50 | 🟡 |
| Código duplicado | Similaridade > 80% | 🟡 |
| Aninhamento profundo | Nível de aninhamento > 3 | 🟡 |
| Números mágicos | Constantes hardcoded | 🟢 |
| Classe deus | Contagem de métodos > 20 | 🔴 |
| Dependências circulares | Imports mútuos | 🔴 |
(2) Detecção automática
---
name: smell-detector
description: "Detectar code smells"
tools:
- Grep
- Glob
- Read
---
## Fluxo de detecção
1. Glob para obter lista de arquivos
2. Grep para buscar padrões de smell
3. Read para confirmar em detalhe
4. Exibir relatório ordenado por severidade
2. Estratégia de refatoração
(1) Mapeamento de smell para refatoração
| Smell | Técnica de refatoração | Complexidade |
|---|---|---|
| Função longa | Extrair Função | 🟢 Baixa |
| Código duplicado | Extrair Método/Template Method | 🟡 Média |
| Aninhamento profundo | Cláusulas Guard/Strategy Pattern | 🟡 Média |
| Números mágicos | Extrair Constante | 🟢 Baixa |
| Classe deus | Dividir Responsabilidades | 🔴 Alta |
| Dependências circulares | Introduzir Interface/Mediador | 🔴 Alta |
(2) Avaliação de risco da refatoração
Matriz de risco da refatoração
Impacto pequeno Impacto grande
Mudança pequena 🟢 Seguro 🟡 Precisa de testes
Mudança grande 🟡 Precisa de revisão 🔴 Precisa de passo a passo
(3) Princípios de ordem de refatoração
## Ordem de refatoração
1. Baixo risco antes de alto risco (extrair constante → extrair função → dividir classe)
2. Local antes de global (nível de função → nível de classe → nível de módulo)
3. Cada etapa verificável (passos pequenos, executar testes a cada etapa)
4. Parável a qualquer momento (o código deve funcionar após qualquer etapa)
3. Processo de refatoração segura
(1) Preparação pré-refatoração
## Pré-verificações
1. Bash: Executar suíte completa de testes, confirmar baseline passando
2. Bash: git commit do estado atual (ponto de snapshot)
3. Read: Entender o contexto completo do alvo da refatoração
4. Identificar todos os pontos de chamada (quem depende deste código)
(2) Executar a refatoração
Loop de refatoração segura
┌──────────────────────┐
│ 1. Modificação em passo pequeno │
│ 2. Executar testes │
│ 3. Testes passaram? │
│ ├─ Sim → Continuar │
│ └─ Não → Reverter │
└──────────────────────┘
(3) Verificação pós-refatoração
## Checklist de verificação
- [ ] Suíte completa de testes passou
- [ ] Comportamento funcional inalterado
- [ ] Código está mais simples/limpo
- [ ] Sem novos TODO/FIXME
- [ ] Sem dependências circulares
4. Skill de refatoração na prática
▶ Exemplo: Extração segura de função
Alice precisa refatorar uma função longa de 200 linhas:
---
name: safe-extract-function
description: "Extração segura de função"
tools:
- Read
- Edit
- Grep
- Bash
---
## Fluxo de extração
1. Read para analisar a função longa, identificar blocos lógicos independentes
2. Listar plano de extração (quais linhas → nome da nova função)
3. Executar passo a passo:
a. Use Edit para criar nova função abaixo da original
b. Use Edit para modificar a função original chamando a nova
c. Bash para executar testes
4. Após todas extrações, executar suíte completa de testes
Bob disse: "O maior medo na refatoração é quebrar funcionalidade ao alterar código — passos pequenos com verificação a cada etapa é dez mil vezes mais seguro que alterar tudo e depois testar."
❓ Perguntas Frequentes
P: O que fazer se os testes falharem durante a refatoração? R: Reverter imediatamente para o último estado passando e analisar a causa da falha. Causas comuns: pontos de chamada omitidos, assinaturas de função incompatíveis, dependências implícitas. P: Até onde deve ir a refatoração? R: O suficiente para atender aos padrões da equipe — não refatore demais. O objetivo é eliminar code smells, não buscar arquitetura perfeita. P: Refatoração e desenvolvimento de funcionalidades podem acontecer simultaneamente? R: Não recomendado. Refatoração não altera comportamento; desenvolvimento de funcionalidades altera. Misturar os dois torna impossível distinguir a origem dos problemas.
📖 Resumo
- Identificação de code smells: usar correspondência de padrões Grep/Glob para detecção automática
- Estratégia de refatoração: mapeamento smell → técnica, ordenar por risco
- Processo seguro: testes baseline → mudanças em passos pequenos → verificação passo a passo → garantia de rollback
- Princípio central: cada etapa verificável, reversível, parável
📝 Exercícios
- Básico (dificuldade⭐): Crie um Skill de detecção de code smells que detecte pelo menos 3 problemas comuns.
- Intermediário (dificuldade⭐⭐): Crie um Skill de extração segura de função implementando extração em passos pequenos + verificação passo a passo.
- Avançado (dificuldade⭐⭐⭐): Crie um Skill de refatoração inteligente que identifique automaticamente smells, selecione técnicas, execute em ordem segura e exiba relatórios comparativos antes/depois.