Что такое баг и как отлаживать код
Откуда берутся баги, как использовать console.log и debugger, чтобы найти проблему.
Системный подход к отладке — не угадывать, а искать
Воспроизведи баг
Убедись что точно понимаешь когда он возникает. Какие данные? Какие действия?
Выдвини гипотезу
Что может быть причиной? Где в коде это могло пойти не так?
Проверь данные
console.log или debugger — посмотри что реально хранится в переменных в этот момент.
Исправь
Внеси минимальное изменение. Один баг — одно исправление.
Проверь что всё OK
Убедись что баг ушёл. Убедись что ничего другого не сломалось.
Откуда берутся баги
Баг — это не стыдно
Слово «баг» (bug — жук по-английски) появилось в 1947 году когда инженеры нашли настоящего мотылька внутри компьютера — он замкнул реле и сломал машину. С тех пор ошибки в программах называют багами.
Баги есть в любом программном обеспечении. Даже в коде Google и Microsoft. Главное — уметь их находить и исправлять.
Почему появляются баги?
1. Опечатки
let count = 0;
count =+ 1; // ← опечатка! Это присваивание +1, а не count + 1
// count остался 1, не прибавляется2. Неправильные предположения
function double(x) {
return x * 2;
}
double("5"); // Ожидали 10, получили "55" — JS склеил строки!3. Граничные случаи
function firstElement(arr) {
return arr[0];
}
firstElement([]); // undefined — пустой массив не предусмотрели4. Недопонимание требований Программист понял задачу иначе чем её сформулировали. Код работает «правильно» — но делает не то что нужно.
Отладка — это детективная работа
Когда что-то работает не так: не паникуй и не угадывай. Действуй системно:
- Воспроизведи баг — убедись что точно понимаешь когда он возникает
- Выдвини гипотезу — что может быть причиной?
- Проверь гипотезу — посмотри на данные в этом месте
- Исправь и проверь — убедись что баг ушёл и ничего нового не сломалось
Функция работает без ошибок, но возвращает неправильное значение. С чего начать отладку?