Почему метод тыка не работает
Типичное поведение новичка: меняет случайные места, перезапускает, надеется. Иногда срабатывает — и это худшее, что может случиться, потому что причина осталась неизвестной и вернётся.
Отладка — это не удача, а процедура. Она осваивается и работает почти всегда.
Порядок действий
1. Воспроизведите. Пока вы не умеете вызывать ошибку по желанию, чинить нечего. Найдите точные шаги: какие данные, какая последовательность действий.
Если воспроизводится не всегда — это отдельный случай, о нём ниже.
2. Прочитайте сообщение целиком. Не первую строку. В сообщении обычно есть название ошибки, место и цепочка вызовов. Половина проблем решается на этом шаге.
Читайте цепочку снизу вверх: ищите первую строку, относящуюся к вашему коду, а не к библиотекам.
3. Сформулируйте, что вы ожидали. Письменно, одной фразой: «ожидал список из трёх записей, получил пустой». Это заставляет уточнить проблему и часто сразу подсказывает ответ.
4. Сузьте область. Главный приём. Задача — не найти ошибку, а найти половину кода, где её точно нет.
Способы:
- разделить пополам: проверить, доходит ли выполнение до середины;
- упростить входные данные до минимальных;
- убрать половину функциональности и посмотреть, осталась ли проблема.
5. Проверьте предположения. Ошибка почти всегда в том месте, где вы уверены. «Тут данные точно приходят» — проверьте, что приходят. «Функция точно вызывается» — убедитесь.
Инструменты
Вывод в консоль. Не стыдно, работает всегда. Выводите не только значение, но и подпись, иначе через пять выводов не разберётесь.
Отладчик. Позволяет остановить выполнение и посмотреть все значения сразу. Осваивается за час, экономит недели. Новички зря его боятся.
Журналы. Для того, что происходит на сервере или редко.
Проверка типов и анализатор. Часть ошибок ловится до запуска.
Когда «работает через раз»
Самый неприятный случай. Обычные причины:
- Порядок выполнения. Что-то не успевает выполниться до того, как результат понадобился.
- Общее состояние. Данные, оставшиеся от прошлого действия.
- Кэш. Браузера, сборки, площадки. Проверьте с полной перезагрузкой.
- Разные данные. Иногда попадаются записи с пустым полем, а иногда нет.
Приём: логируйте с точным временем и посмотрите, что происходит перед сбоем. Часто видно, что порядок событий отличается.
Что делать, когда застряли
Правило получаса. Тридцать минут без подвижек — смените подход или спросите.
Объясните кому-нибудь. Классика: рассказывая вслух, вы находите ответ на середине объяснения. Работает даже с человеком, не понимающим предмет.
Отойдите. Пятнадцать минут перерыва часто дают больше, чем два часа упорства.
Проверьте очевидное. Тот ли файл вы правите? Тот ли сервер перезапустили? Сохранён ли файл? Смешно, но это регулярная причина.
После починки
Задайте два вопроса: почему это случилось и как поймать раньше в следующий раз.
Если ошибка была неочевидной — напишите тест, который её воспроизводит. Это единственный способ гарантировать, что она не вернётся.
Открытые роли по теме статьи
Читать полезно, а делать — ещё полезнее. В эти команды можно написать прямо сейчас:
- iOS-разработчик — MAIBO - MedTech-пилот для клиник
- Контент-маркетолог / комьюнити — CohortX — платформа командных пет-проектовмаркетингtelegramseoконтент
Похожие статьи
- Study Tools Season: two weeks, a team, and a finished projectCohortX launches its first season: September 7–21, teams of 2–4 build one study tool each — from schedules to progress trackers. How to join and what it adds to your portfolio.
- Сезон инструментов для учёбы: две недели, команда и законченный проектCohortX запускает первый сезон: с 7 по 21 сентября команды по 2–4 человека делают по одному инструменту для учёбы — от расписания до трекера прогресса. Как участвовать и что это даёт портфолио.
- Pair programming: when it helpsHow it works, why two people are sometimes faster than one, when it's justified, and when it only gets in the way.