~/VibeHandbook
PDF бесплатно

Глава 12 · 02

Чек-лист отладки

Проходите по этим пунктам по порядку. Прыжок сразу к «почини это» как раз и заставляет AI ходить кругами.

  1. Воспроизведите ошибку надёжно. Найдите точные шаги, которые вызывают баг каждый раз. Баг, который вы не можете воспроизвести, — это баг, исправление которого вы не можете подтвердить: вы будете лишь вечно гадать, исчез ли он. Если он проявляется время от времени, охотьтесь за переменной, которая его переключает: конкретный ввод, состояние «вошёл в систему» против «вышел», медленная сеть.
  2. Прочитайте саму ошибку. Не пробегайте глазами. Сообщение об ошибке и верхушка стека вызовов обычно называют файл и строку, где всё пошло не так. Новички часто проматывают самое полезное предложение на экране, потому что оно выглядит пугающе.
  3. Соберите контекст. Соберите текст ошибки, стек вызовов, релевантный код и одно предложение с описанием того, чего вы ожидали.
  4. Передайте AI полную картину. Вставьте всё перечисленное выше в одно сообщение. Дайте ему сформировать гипотезу.
  5. Формулируйте гипотезу, а не исправление. Спросите «что могло это вызвать?» прежде чем «почини это». Неверное исправление по неверной теории — пустая трата времени — а иногда оно добавляет второй баг поверх первого.
  6. Добавьте логирование, чтобы проверить гипотезу. Подтвердите, что код действительно делает, прежде чем менять его.
  7. Применяйте двоичный поиск к проблеме. Сужайте место, где всё ломается, многократно деля подозрительную область пополам.
  8. Исправляйте первопричину, а не симптом. Убедитесь, что исправление устраняет причину поломки, а не только видимый сбой.
  9. Проверьте исправление и проверьте на регрессии. Заново выполните шаги воспроизведения. Затем убедитесь, что соседние функции по-прежнему работают — регрессия это когда исправление тихо ломает то, что раньше работало, как если бы вы заделали одну течь, а рядом прорвало трубу.

Этот чек-лист на самом деле — один цикл, по которому вы катитесь, пока баг не исчезнет. Каждый блок передаёт улики следующему, а неудачная проверка просто отправляет вас на новый круг с тем, что вы узнали:

   ┌──────────────┐
   │ ВОСПРОИЗВЕДИ │  делай так, чтобы повторялось каждый раз
   └──────┬───────┘
          ▼
   ┌──────────────┐
   │ ЧИТАЙ ОШИБКУ+│  что она на самом деле говорит?
   │   СОБЕРИ     │  собери трассу + код + контекст
   └──────┬───────┘
          ▼
   ┌──────────────┐
   │  ГИПОТЕЗА    │  "что могло это вызвать?"
   └──────┬───────┘
          ▼
   ┌──────────────┐
   │ ПОДТВЕРДИ    │  добавь лог, получи улику
   │   ЛОГОМ      │
   └──────┬───────┘
   неверн.│  верная
   ┌──────┘ догадка ▼
   │            ┌──────────────┐
   │ (новая     │  ИСПРАВЬ     │  не симптом
   │  теория)   │   ПРИЧИНУ    │
   │            └──────┬───────┘
   │                   ▼
   │            ┌──────────────┐    сбой / регрессия
   └────────────┤  ПРОВЕРКА    │──────────┐
                │ +регрессии   │          │
                └──────┬───────┘          │
                       │ проходит         │
                       ▼          ◀───────┘
                    ✔ ГОТОВО    (новый круг)

Порядок не случаен. Каждый шаг производит улики, которые нужны следующему шагу. Воспроизведение даёт вам что читать; чтение даёт контекст для сбора; контекст даёт AI материал для гипотезы. Пропустите шаг — и вы скармливаете следующему дыру.

Хотите офлайн-версию?

Скачайте всю книгу в PDF или EPUB — бесплатно.