1.7 KiB
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:
- Testes existem — o comportamento que será afetado tem cobertura
- Testes passam — o estado antes da mudança é verde
- Passos pequenos — cada mudança deve ser verificável isoladamente
- Sem surpresas — nenhuma funcionalidade nova introduzida junto com refatoração
Se não há testes cobrindo o trecho:
- PARAR a refatoração
- Solicitar ao
@testesa 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