~/VibeHandbook
PDF gratis

Capítulo 12 · 05

Hipótesis, registros y búsqueda binaria

Una vez que la IA propone una causa, no la aceptes sin más. Pruébala de forma barata. La prueba más barata suele ser una línea de registro (log).

Pídele a la IA que añada registros temporales:

"Antes de cambiar nada, añade un console.log (o print) que muestre el valor de user justo antes de la línea 14, para que podamos ver si en realidad es indefinido."

Ejecútalo, pega el resultado de vuelta. Ahora tienes evidencia, no una teoría. Quizás user es indefinido, confirmando la hipótesis. Quizás está bien y el verdadero culpable está un nivel más arriba. De cualquier forma, has avanzado. Registra con generosidad mientras investigas: el valor de la variable, y una etiqueta que diga cuál es y dónde está el registro. Un console.log(user) desnudo que imprime undefined es mucho menos útil que console.log("user at validate.js:14 =", user). Y recuerda retirar los registros temporales una vez que el bug esté arreglado; el ruido de depuración sobrante es su propio pequeño desorden.

Cuando el bug vive en algún lugar de un proceso largo y no puedes saber dónde, usa la búsqueda binaria. Corta la región sospechosa por la mitad: añade un registro en el punto medio.

La idea: cada verificación descarta la mitad de lo que queda, así que un espacio de búsqueda enorme colapsa rápido. Aquí un bug se esconde en algún lugar entre el paso 1 y el paso 8; tres verificaciones lo acorralan:

   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.

¿El valor se veía correcto ahí? Entonces el bug está después; busca en esa mitad. ¿Se veía mal ya? El bug está antes; busca en esa mitad. Cada paso reduce a la mitad el espacio de búsqueda, así que incluso una ruta de mil líneas se acota en unas diez verificaciones. Dile a la IA explícitamente: "Ayúdame a bisecar esto, ¿cuál es el punto medio donde debería registrar?" La misma técnica funciona en el historial, no solo en el código: si una función funcionaba la semana pasada y se rompió hoy, bisecciona tus commits para encontrar el cambio exacto que introdujo el bug.

¿Lo quieres sin conexión?

Descarga el libro entero en PDF o EPUB — gratis.