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

YAML
---
name: smell-detector
description: "Detectar code smells"
tools:
  - Grep
  - Glob
  - Read
---
MARKDOWN
## 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

TEXT 📖 Somente leitura
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

MARKDOWN
## 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

MARKDOWN
## 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

TEXT 📖 Somente leitura
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

MARKDOWN
## 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:

YAML
---
name: safe-extract-function
description: "Extração segura de função"
tools:
  - Read
  - Edit
  - Grep
  - Bash
---
MARKDOWN
## 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


📝 Exercícios

  1. Básico (dificuldade⭐): Crie um Skill de detecção de code smells que detecte pelo menos 3 problemas comuns.
  2. Intermediário (dificuldade⭐⭐): Crie um Skill de extração segura de função implementando extração em passos pequenos + verificação passo a passo.
  3. 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.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%