Vibecoding
Como refatorar código bagunçado com IA sem quebrar tudo
Refatorar é melhorar a estrutura sem mudar o comportamento. A palavra-chave é 'sem mudar o comportamento'.
Você tem uma função de 200 linhas que faz dez coisas, tem nomes tipo x2 e temp, e que ninguém entende, incluindo você que escreveu. Bate a vontade de jogar pra IA e pedir "arruma isso aí".
Cuidado. Refatorar é melhorar a estrutura sem mudar o comportamento. A parte que quase todo mundo esquece é o "sem mudar o comportamento". A IA pode "arrumar" e, no caminho, mudar o que o código faz. Aí você trocou código feio que funcionava por código bonito que quebrou.
Meu take: refatorar com IA é ótimo, desde que você tenha uma rede de segurança. Sem rede, é aposta.
Primeiro: entenda o que refatorar não é
Refatorar não é reescrever do zero. Não é adicionar feature. Não é consertar bug. É só isto: deixar o código mais claro, mantendo exatamente o mesmo comportamento.
Se o comportamento muda, não foi refatoração. Foi outra coisa, e você misturou dois trabalhos que deveriam ser separados.
Passo 1: crie a rede de segurança
Antes de tocar em qualquer linha, você precisa de um jeito de saber se quebrou. A rede é teste.
Se o código já tem teste, ótimo. Rode e confirme que passa. Se não tem, escreva o mínimo que cobre o comportamento atual:
test("calcula o total com desconto", () => {
expect(calcularTotal(100, 0.1)).toBe(90)
})
Não precisa cobrir tudo. Cubra os casos que importam. Esse teste é o juiz: se ele passava antes e passa depois, o comportamento se manteve.
Sem nenhum teste, refatore no escuro por sua conta e risco.
Passo 2: commit antes de começar
Ponto de retorno. Se a refatoração der ruim, você volta uma casa.
git add .
git commit -m "chore: ponto antes de refatorar calcularTotal"
Agora você tem pra onde voltar. Isso muda tudo psicologicamente: você experimenta sem medo.
Passo 3: peça mudanças pequenas
O erro clássico é jogar 500 linhas e pedir "refatora tudo". A IA devolve 500 linhas diferentes e você não tem como revisar. Um bug se esconde fácil aí.
Vá em pedaços. Peça uma melhoria por vez:
Esta função tem nomes de variável ruins. Renomeie
x2 e temp para nomes que descrevem o que guardam.
Não mude a lógica nem o comportamento.
Depois:
Extraia o cálculo de desconto para uma função
separada. Mantenha o resultado idêntico.
Uma mudança, um teste, um commit. Repita. Cada passo é reversível e revisável.
Passo 4: rode o teste depois de cada mudança
Este é o coração do processo. Mudou, rodou o teste.
npm test
Passou? Segue. Commit. Próxima melhoria. Falhou? A última mudança quebrou algo. Você sabe exatamente o quê, porque mudou uma coisa só. Reverte e tenta de outro jeito.
Comparado com mudar tudo de uma vez e o teste quebrar sem saber onde, isso é dia e noite.
Passo 5: leia o que a IA fez
Teste passando não é permissão pra confiar cego. Leia o diff. A IA pode ter "melhorado" removendo uma verificação que parecia inútil mas cobria um caso raro.
Pergunte a cada trecho: isso muda o comportamento em algum caso? Se você não tem certeza, você não terminou.
O processo em resumo
- Escreva teste do comportamento atual.
- Commit antes de começar.
- Peça uma mudança pequena por vez.
- Rode o teste depois de cada mudança.
- Leia o diff antes de aceitar.
- Commit a cada passo que passa.
Vibecoding com engenharia é usar a velocidade da IA sem abrir mão do controle. Ela reescreve em segundos. Você garante que o que ela reescreveu ainda faz o que devia. Código bonito que quebrou é pior que código feio que funciona.
A decisão é sua.
Perguntas frequentes
Perguntas rápidas
+Qual a diferenca entre refatorar e reescrever?
Refatorar melhora a estrutura mantendo o comportamento. Reescrever comeca do zero. Refatorar e mais seguro e quase sempre suficiente.
+Preciso de teste antes de refatorar?
Idealmente sim. Teste e a rede que garante que voce nao mudou o comportamento sem querer. Sem ele, voce refatora no escuro.
+Posso pedir pra IA refatorar tudo de uma vez?
Pode, mas nao deveria. Mudanca grande e dificil de revisar e de reverter. Va em pedacos pequenos.
Continue lendo
Como não virar refém de uma ferramenta de IA
A ferramenta que você ama hoje pode dobrar de preço, mudar de dono ou fechar amanhã. Não construa em cima de uma só.
VibecodingO que fazer quando a IA te dá código que você não entende
A tentação é apertar aceitar e seguir. Não faça. Código que você não entende é código que você não mantém.
VibecodingComo monitorar seu app e saber quando ele quebra
Você quer ser o primeiro a saber que quebrou. Não o último, avisado por um cliente irritado.