~/VibeHandbook

Глава 07 · 06

Первопричина против симптома

Самая соблазнительная ловушка в отладке — заплатка, которая заставляет ошибку исчезнуть, не устраняя причину. Если user равен undefined, а вы «чините» это с помощью if (user) { ... }, ошибка прекращается — но теперь регистрации молча ничего не делают, что хуже: громкое падение хотя бы говорило вам, что что-то не так, а теперь не говорит ничего. Настоящий вопрос: почему user здесь undefined? Может быть, поиск в базе данных не удался. Может быть, поле было переименовано. Может быть, выше по коду пропущен await.

Когда AI предлагает исправление, спросите его:

  • «Это исправляет причину или прячет симптом?»
  • «Какова была первоначальная причина того, что значение было неправильным?»
  • «Может ли эта же первопричина сломать что-то ещё?»

Исправление первопричины обычно делает код проще или понятнее. Заплатка-симптом обычно добавляет защитную проверку, try/catch, который проглатывает ошибки, или значение по умолчанию, которое маскирует настоящую проблему. Относитесь ко второму типу с подозрением. Есть признак, который стоит выучить: если исправление добавляет код, единственная задача которого — предотвратить падение, а не сделать правильную вещь, вы, вероятно, латаете симптом. Настоящие исправления обычно полностью устраняют невозможное состояние, а не просто переживают его.

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

Получите PDF + EPUB + скачиваемую библиотеку промптов + обновления версий.

$ Получить PDF — $39