Сколько раз вы чувствовали себя безнадежно, искали иголку в стоге сена, а она оказывалась прямо у вас на глазах?

Для нас, программистов, это происходит почти каждый раз, когда мы пытаемся отладить проблему в своем коде, потратив часы на поиск исправления, листая документацию, глядя на свой код в надежде, что он сознается, и оказывается, что вы использовать «‹» вместо «›».

Чтобы помочь вам ускорить процесс отладки, я собрал несколько советов, которые помогут вам найти эти надоедливые ошибки и избавиться от них как можно скорее.

Печать на консоль

Напишите осмысленные операторы печати, которые регистрируют значение сомнительной переменной, которую вы хотите отслеживать. Вы можете решить проблему быстрее, только если знаете, в чем проблема. Написание печатных заявлений не будет стоить вам никакого времени и вместо этого сэкономит вам много. Они также помогают узнать, выполняется блок кода или нет. Простой вывод «Я здесь» позволит вам узнать ход вашего кода и указать на ошибки в ваших условиях «если» или циклах for.

Прочтите и поймите сообщение об ошибке

Вероятно, это первое, что вы захотите сделать, когда ваша программа выйдет из строя. Довольно легко игнорировать это и вести себя как Шерлок Холмс, думая, что вы знаете, в чем проблема, но правда в том, что сообщение об ошибке знает больше. Консоль выдаст трассировку стека, где потенциально может скрываться проблема. В большинстве случаев первые несколько строк сообщения об ошибке должны дать вам подсказку о том, что вызывает проблему. По крайней мере, он укажет несколько номеров строк, где программа остановилась, что является хорошим местом для начала вашей охоты.

Погуглите сообщение об ошибке

Есть большая вероятность, что вы поймете, где ошибка, просто прочитав сообщение об ошибке, поскольку оно довольно описательное. Но в зависимости от типа проблемы сообщение об ошибке может быть не всегда точным или указывать на что-то, чего вы не понимаете. В этом случае лучше всего поискать описание сообщения об ошибке в Google, и вы можете увидеть несколько результатов stackoverflow.com или официальной документации. На всей этой планете велика вероятность, что кто-то уже сталкивался с подобной ошибкой, спрашивал о ней на сайтах вопросов и ответов, таких как Stack Overflow, и получил ответ. Если вам повезет, то это также может ответить на ваш вопрос. Это зависит от того, насколько конкретной или общей является ваша ошибка. Первым делом нужно прочитать вопрос и убедиться, что он похож на ваш. Самое главное, убедитесь, что это тот же язык, хорошо включить свой язык в поисковую фразу Google. Если вы нашли ответ, который искали, обязательно прочитайте несколько комментариев к нему или ознакомьтесь с другими ответами и посмотрите, сработало ли это для других, а затем попробуйте их сами.

Используйте отладчик

Они включили этот удобный инструмент не просто так, и поверьте мне, он делает то, что следует из его названия. Большинство IDE оснащены одним из них, и будет полезно, если вы знаете, как его использовать. На самом базовом уровне он позволяет выполнять ваш код построчно, сообщая вам, что происходит, большинство программистов полностью игнорируют этот инструмент. Знать, в чем проблема, — это отдельная тема, но если вы не знаете, в чем проблема, вы в конечном итоге потратите часы, пытаясь понять это. Если операторы печати и сообщения об ошибках не дают вам подсказки о том, в чем проблема, в 99% случаев отладчик точно скажет вам, где она находится. Это очень удобно для отслеживания всех переменных и указания на ту пресловутую переменную, которая не должна была содержать «ноль». Некоторые IDE даже имеют возможность запускать условные точки останова, что полезно, если вы хотите приостановить выполнение кода при выполнении определенного условия, и оттуда вы можете просмотреть содержимое всех переменных.

Создание тестовых случаев

Делайте это только в том случае, если вы знаете, что делаете. Создание тестовых случаев — отличный способ убедиться, что ваш код в конечном итоге делает то, что должен был делать. Думайте об этом как о написании кода, который будет тестировать какой-то другой код, над которым вы работаете, чтобы убедиться, что его вывод соответствует тому, что от него ожидается.

Часто проверяйте и запускайте свой код

Не ждите, чтобы написать 100 строк кода и начать потеть, когда вы нажмете кнопку запуска, поскольку обычно это никогда не происходит так, как ожидалось. Обязательно запускайте свой код с частыми интервалами, чтобы при появлении проблемы вы знали, с какой точки она возникла. Это сэкономит вам довольно много времени на поиск проблемы.

выйти на прогулку

За этим нет никакой науки. Просто отвлекитесь от клавиатуры и освежите свои мысли, прежде чем вернуться к ней. Не бойтесь, что вы можете потерять представление о том, где вы остановились, вместо этого это может даже помочь вам найти другой подход. Попробуйте подумать о том, как бы вы придумали лекарство, прогуливаясь по саду или принимая душ, ваш разум обычно работает лучше всего в это время. Вы удивитесь, насколько это может быть полезно.

Попросить помощи

Подумайте о парне, который разместил этот вопрос на Stack Overflow, который когда-то помог вам исправить ошибку. Что заставило его задать этот вопрос, и, возможно, ему также повезло, что он получил ответ на свой вопрос. Опять же, существует огромное сообщество, которое ждет, когда вы зададите вопрос и поможете вам. Поэтому, когда кажется, что ничего не работает, просто задайте свой вопрос, и, надеюсь, кто-нибудь ответит на него. Это может сэкономить вам часы или даже дни. Но имейте в виду, что есть некоторые рекомендации, как задать хороший вопрос.

  • Будьте ясны и кратки в отношении того, чего вы пытаетесь достичь. Не включайте дополнительные детали, не связанные с кодом, так как они могут запутать других.
  • Копировать — вставьте код, который, по вашему мнению, вызывает ошибку. Это позволит другим узнать, что и как вы пытались сделать.
  • Включите полное сообщение об ошибке — даже если вы его не поняли, это мог бы сделать кто-то другой.
  • Объясните вещи, которые вы уже пробовали, и объясните, почему они не сработали для вас. Это помешает людям давать ответы, которые вы уже пробовали.
  • Если применимо, покажите несколько шагов, как воспроизвести проблему. Это может даже привести к выводу, что это проблема на стороне разработчика языка, и они могут придумать для нее исправление.
  • Не забудьте указать, на каком языке вы столкнулись с проблемой. Некоторые веб-сайты позволяют вам включать теги для вашего вопроса, которые помогают другим легко найти его, обязательно используйте их.

Анализируйте и оставляйте комментарии

После устранения проблемы повторите шаги, которые вы предприняли, и запомните их. Если там нет места, оставьте комментарий к своему коду, объяснив, что именно вы сделали, чтобы, если в будущем вы столкнетесь с той же проблемой, вы всегда могли вернуться и посмотреть, что вы делали в прошлом.

Празднуйте!

Не радуйтесь слишком рано, некоторые исправления приводят к еще большим проблемам. Однако после того, как вы все решили и оставили несколько комментариев, похлопайте себя по плечу за решение проблемы. Вы заслуживаете всей похвалы за спасение дня на этом.

Удачного кодирования (точнее, отладки)!

Первоначально опубликовано на www.digital-noir.com 10 декабря 2018 г.