.agent/agents/refatorar/rules/refatoracao-segura.md

1.7 KiB

type name description scope trigger updatedAt
rule refatoracao-segura Toda refatoração deve preservar comportamento e ter cobertura de testes local always_on 2026-06-19

Regra: Refatoração Segura

Contexto

Refatoração é a melhoria da estrutura interna do código sem alterar seu comportamento externo. Sem essa garantia, refatoração vira regressão.

Regra

Antes de executar qualquer refatoração, verificar:

  1. Testes existem — o comportamento que será afetado tem cobertura
  2. Testes passam — o estado antes da mudança é verde
  3. Passos pequenos — cada mudança deve ser verificável isoladamente
  4. Sem surpresas — nenhuma funcionalidade nova introduzida junto com refatoração

Se não há testes cobrindo o trecho:

  • PARAR a refatoração
  • Solicitar ao @testes a criação de testes de cobertura
  • Só prosseguir após testes existirem e passarem

Exemplos

✅ Correto

1. Verificar testes existentes para `calcularLicenca()`
2. Executar testes → todos passam
3. Extrair cálculo de multa para `calcularMulta()`
4. Executar testes → todos passam
5. Sugerir commit ao humano: "refactor: extrair calcularMulta de calcularLicenca"

❌ Incorreto

1. Refatorar `calcularLicenca()` inteiro
2. Adicionar nova regra de desconto (feature!)
3. Descobrir que não tinha testes
4. Sugerir commit: "refactor: melhorar cálculos" ← mentira, é feature + refatoração

Impacto

Sem esta regra, refatorações introduzem regressões silenciosas que só são descobertas em produção.

Referências

  • Martin Fowler — "Refactoring: Improving the Design of Existing Code"
  • Persona: agents/refatorar/persona