~/VibeHandbook
PDF grátis

Capítulo 12 · 05

Hipóteses, registros e busca binária

Assim que a IA propuser uma causa, não aceite de cara. Teste-a de forma barata. O teste mais barato geralmente é uma linha de log.

Peça à IA para adicionar registros temporários:

"Antes de mudarmos qualquer coisa, adicione um console.log (ou print) que mostre o valor de user logo antes da linha 14, para vermos se ele está realmente indefinido."

Execute, cole a saída de volta. Agora você tem evidência, não uma teoria. Talvez user esteja indefinido — confirmando a hipótese. Talvez esteja tudo bem e o verdadeiro culpado esteja um nível acima. De qualquer forma, você avançou. Registre generosamente enquanto investiga: o valor da variável, e um rótulo dizendo qual é ela e onde o log está. Um console.log(user) nu que imprime undefined é muito menos útil do que console.log("user at validate.js:14 =", user). E lembre-se de remover os logs temporários assim que o bug for corrigido — ruído de depuração deixado para trás é uma bagunça pequena por si só.

Quando o bug vive em algum lugar de um processo longo e você não consegue saber onde, use busca binária. Corte a região suspeita ao meio: adicione um log no ponto médio.

A ideia: cada verificação descarta metade do que resta, então um espaço de busca enorme desmorona rápido. Aqui um bug se esconde em algum lugar entre o passo 1 e o passo 8 — três verificações o encurralam:

   step:  1  2  3  4  5  6  7  8      a bug is somewhere in here
          ░░░░░░░░░░░░░░░░░░░░░░

   check 1 ── log at 4 ── OK ──▶  bug is AFTER 4, drop 1–4
                                  ░░░░░░░░░░░  (5 6 7 8 left)

   check 2 ── log at 6 ── BAD ─▶  bug is AT/BEFORE 6, drop 7–8
                                  ░░░░░  (5 6 left)

   check 3 ── log at 5 ── OK ──▶  bug is at step 6   ✔ found

   8 steps → 3 checks.  1000 steps → about 10 checks.

O valor parecia correto ali? Então o bug está depois dele — pesquise essa metade. Já parecia errado? O bug está antes — pesquise essa metade. Cada passo reduz o espaço de busca pela metade, então até um caminho de mil linhas se estreita em cerca de dez verificações. Diga explicitamente à IA: "Ajude-me a bisseccionar isso — qual é o ponto médio onde eu devo colocar um log?" A mesma técnica funciona no histórico, não só no código: se uma funcionalidade funcionava semana passada e quebrou hoje, bisseccione seus commits para encontrar a mudança exata que introduziu o bug.

Quer offline?

Baixe o livro inteiro em PDF ou EPUB — grátis.