Когда я только начинал учиться программировать, я всегда слышал, как коллеги-программисты говорят о том, как неприятно иметь ошибки в вашем коде, и как инженер-программист вы тратите около 50% своей рабочей жизни на отладку кода. Ученый-компьютерщик Эдсгер Дийсктра однажды сказал: «Если отладка - это процесс удаления программных ошибок, то программирование должно быть процессом их внесения». Это глупое заявление, но почему-то я полностью с ним согласен. Ошибки - это естественные побочные эффекты наших кодов. Зная, что наши коды неизбежно будут содержать ошибки, мы должны научиться эффективно отлаживать наши коды. Когда мы пишем код, возникает так много разных ошибок и разных типов ошибок, поэтому мы никогда не сможем полностью погрузиться в миллионы сценариев, в которых существуют ошибки. Однако, как правило, есть много советов и рекомендаций, когда дело доходит до отладки наших кодов. Давайте погрузимся в них.

Первый и наиболее очевидный совет по отладке - это прочитать сообщение об ошибке. Я не могу это подчеркнуть, иногда мы не полностью читаем сообщение об ошибке или не понимаем его должным образом. Прочтение и понимание того, что это такое и чем вызвано, является важным способом решения проблемы. Как только мы поймем, в чем проблема, мы сможем быстро провести мозговой штурм, разработать несколько различных гипотез и проверить их. Например, если в сообщении об ошибке говорится, что существует неопределенная переменная, скорее всего, мы неправильно написали переменную или вызывали переменную с опечаткой. Для нас чрезвычайно важно прочитать и понять сообщение об ошибке, чтобы мы могли определить, где находится эта неопределенная переменная и почему она не определена. Узнав, где находится неопределенная переменная, нам намного проще исправить ее и предать забвению эту ошибку.

Сейчас мы много раз не встречаем сообщений об ошибках в наших кодах, но функции / возможности, которые мы создали, просто не работают должным образом. В этом случае появляется второй совет по отладке: постоянно воспроизводите ошибку. Самый важный шаг для отладки наших кодов - это выяснить, где коды пошли не так, для этого мы хотим постоянно пытаться воспроизвести эту ошибку. Нам также нужно обязательно записать шаги, которые могут воспроизвести эту ошибку, понимание того, почему она образуется и как ее воспроизвести, может значительно облегчить нашу жизнь, когда дело доходит до реализации решения. В случае, когда в наших кодах нет сообщения об ошибке, мы хотим убедиться, что мы постоянно используем оператор печати. Оператор печати - чрезвычайно полезный инструмент для отладки, установка множества операторов печати повсюду в нашем коде помогает нам определить, где потенциально может быть проблема. В приведенном ниже фрагменте кода мы видим, что печать yk1 и yk2 в разных местах помогает нам определить, какая часть кода не работает должным образом. Если yk1 не печатает, мы наверняка думаем, что в этот момент что-то не так, и наоборот для yk2.

Оператор печати может быть очень полезен, но на самом деле более полезен установка точек останова. Вот третий совет по отладке: используйте отладчик для установки точек останова. Большинство языков программирования имеют отладчик как часть пакета, чтобы помочь разработчикам отлаживать. Как следует из названия, отладчик помогает нам определить, где находится ошибка, путем установки точек останова. Когда мы устанавливаем точку останова в наших кодах, код перестанет работать именно в этой точке. Затем войдет программа-отладчик, и мы сможем исследовать наши коды до этой точки построчно. (у Ruby есть pry; у Rails есть byebug; у JavaScript есть отладчик, у Python есть pdb). Разные языки программирования имеют разные инструменты отладчика, что усложняет обучение. Для простоты и руководства для начинающих я включу некоторые ресурсы и ссылки об обучении использованию отладчика в конце статьи.

Еще один полезный совет при отладке - это на минуту взглянуть на картину в целом. Что мы пытаемся сделать с этим блоком кода? Какова цель этой функции, которую мы написали? Каковы должны быть результаты этой функции / функции? Это вопросы, которые мы должны задать себе, когда дело доходит до отладки. Когда дело доходит до отладки, очень важно знать и понимать назначение кодов, поэтому мы можем правильно проанализировать, почему и как в настоящее время код не работает должным образом. Что касается понимания наших кодов, то, как правило, лучше всего писать много комментариев к нашим кодам, чтобы помочь нам запомнить цель этого кода и помочь другим программистам гораздо проще и быстрее читать коды. Есть поговорка: Рим не за один день строили. Как и наш проект / приложение. Когда мы его создаем, скорее всего, мы будем работать с группой единомышленников, мы хотим убедиться, что наши коллеги-программисты понимают код, который мы написали. Просто написав комментарии о функциях и особенностях фрагмента кода, мы можем устранить множество недопониманий между нашими коллегами-разработчиками. Таким образом, как общий совет хорошего программиста, написание комментариев может быть очень полезным и полезным для отладки, а также сделать шаг назад, чтобы взглянуть на более широкую картину нашего проекта / программы / приложения.

Еще один полезный совет по отладке - закомментировать. После выяснения, где вообще наши коды сталкиваются с ошибками / ошибками. Мы можем просто закомментировать часть кода для тестирования. Используя следующий фрагмент кода в качестве примера, мы закомментировали функцию fibonacci, проверив, работает ли наш код без этой функции, а затем перешли к построчному раскомментированию внутри функции. Каждый раз, когда мы раскомментируем одну строку, обязательно проверяйте, что функция делает с этой строкой, и вместе мы сможем точно определить, какая строка вызывает проблему или несколько строк кода вызывают ошибку.

Еще один способ отладки наших кодов - использовать инструмент обработки ошибок. Этот инструмент доступен разработчикам на многих языках программирования. Например, в JavaScript есть ошибка попытаться поймать. Это особенно удобно, когда мы имеем дело с fetch и promises. В моем предыдущем блоге о JavaScript Async & Await я объяснил, что такое выборка и обещание. Часть try and catch, чтобы узнать, что именно делает функция, поместив ее в блок try, catch определит, что делать, если в блоке try возникает исключение. В нашем фрагменте кода ниже это простая демонстрация попыток и уловок. Мы пробуем функцию dangerousCode, если есть ошибка, поймайте ошибку и распечатайте ее. Таким образом, мы можем определить, какие ошибки есть в этой функции.

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

Я уверен, что есть много других советов, о которых я не рассказывал или не знал! Не стесняйтесь делиться своими мыслями и мнениями по этой теме и просмотрите следующие ссылки для получения более подробной информации по этой теме! Спасибо за просмотр и удачного дня!