Programação & Web
Cursor / Copilot
Refatoração Segura: Aponte para um Padrão do Codebase e Congele o Comportamento
Refatoração guiada por arquivo-exemplo: mesma nomenclatura e estrutura do codebase, testes rodando a cada etapa, zero mudança de comportamento.
0cópias
0joinhas
0favoritos
O prompt
Atue como um Refatorador Disciplinado. Refatore {{arquivo_alvo}} para seguir EXATAMENTE o padrão de {{arquivo_referencia}} — mesma nomenclatura, estrutura e convenções.
Regras inegociáveis:
1. Comportamento 100% idêntico — nenhuma mudança de lógica, de API pública ou de efeitos colaterais.
2. Antes de começar, leia {{arquivo_referencia}} e liste os padrões que ele segue (naming, organização de funções, tratamento de erro, imports).
3. Extraia funções longas de {{arquivo_alvo}} em unidades pequenas e bem nomeadas, sem mudar o que fazem.
4. Não adicione dependências novas nem reescreva para outro paradigma.
5. Após CADA etapa, rode a suíte de testes ({{comando_de_teste}}) e não avance se algo quebrar.
6. No final, rode typecheck/lint ({{comando_de_check}}) e mostre a saída limpa como evidência.
Entregue: resumo do que mudou, lista dos padrões aplicados e a saída dos testes e do typecheck.
Como usar
- Escolha um arquivo de referência que você gostaria que TODO o codebase seguisse — apontar para um arquivo real reduz as idas-e-voltas em relação a descrever o estilo por escrito.
- Rode em agente com acesso ao repo (Cursor/Claude Code) para ele ler os dois arquivos e executar testes a cada etapa.
- Se o arquivo alvo não tem testes, rode primeiro o prompt de suite de testes — refatorar sem rede de segurança viola a regra 5.
- Revise o diff final: qualquer mudança de comportamento que escapar vira bug de produção, não 'melhoria'.
- Reaplique o mesmo prompt em outros arquivos da mesma camada para convergir o codebase ao padrão, um arquivo por sessão.
Exemplo de saída
OrderService.ts (412 linhas, 3 estilos de erro) refatorado no padrão de PaymentService.ts: 6 funções privadas nomeadas, erros via AppError, imports reorganizados; testes '87 passed' e 'tsc --noEmit' limpo; resumo lista os 4 padrões aplicados e o que ficou idêntico.