Сервисы Digital Skynet
355

Дебаггинг: прокачиваем скиллы

Все мы пишем код, который в какой-то момент ломается. Это часть процесса разработки. Когда вы сталкиваетесь с ошибкой, вам кажется, что вы бессильны. Однако даже самые опытные разработчики сталкиваются с ошибками.

В закладки
Офис "Digital Skynet"

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

Вот некоторые из ошибок, которые допускают разработчики

Неумение регистрировать сообщения об ошибках

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

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

Неумение читать сообщения об ошибках

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

Это одна из причин, почему отладка занимает много времени.

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

Неумение читать системные логи

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

Неумение записывать логи трассировки

Трассировка отслеживает выполнение программы и данные. Сообщения трассировки упрощают процесс отладки. Логи трассировки - это простой способ отслеживать выполнение программы и своевременно находить ошибки.

Неумение вносить дополнительные изменения, сбилдить и протестировать их

Многие разработчики пишут большие куски кода, прежде чем собрать и протестировать всё. Время поиска ошибок увеличивается пропорционально количеству кода, который был изменен. Стремитесь к инкрементным изменениям: проверяйте отдельные части кода как можно чаще. Это гарантирует, что вы не окажетесь в ситуации что ничего не работает, а большая часть уже написана.

Часто я даже рефакторю код, чтобы упростить написанное.

Неумение использовать автоматические тесты

Unit-тесты и end-to-end тесты предотвращают появление ошибок. Одна из причин, по которой код ломается - игнорирование автоматического тестирования. Ведь самому очень сложно заметить ошибки.

Неумение использовать метод исключения

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

Сформулируйте определенную гипотезу и попытайтесь доказать или опровергнуть ее. Многократное просматривание кода вряд ли поможет найти ошибки.

Копипастинг со StackOverflow

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

Еще чаще задавая вопрос, ответ появляется сам по себе.

Когда я разговариваю с другими членами команды, в конечном итоге я сам же и отвечаю на свой вопрос. Это происходит потому, что мы фокусируем всё внимание на решение конкретной задачи.

Неумение решать проблемы снова и снова

Один из наиболее успешных методов дебаггинга - попытка повторного использования вашего решения снова и снова, а в некоторых случаях пытаться повторно реализовать определенную функцию с нуля. Это заставляет вас находить потенциальные проблемы, путем имплементации.

Неумение анализировать стек вызовов

Проанализируйте стек вызовов и удостоверьтесь, что все переменные принимают правильные значения

Неиспользование отладчика

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

Также существует множество инструментов отладки, которые могут помочь писать более качественный код.

Перевод статьи How to Improve Your Debugging Skills от Digital Skynet :)

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Digital Skynet", "author_type": "self", "tags": [], "comments": 2, "likes": -2, "favorites": 5, "is_advertisement": false, "subsite_label": "services", "id": 48075, "is_wide": false, "is_ugc": true, "date": "Mon, 15 Oct 2018 09:44:22 +0300" }
{ "id": 48075, "author_id": 187179, "diff_limit": 1000, "urls": {"diff":"\/comments\/48075\/get","add":"\/comments\/48075\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/48075"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 200396 }

2 комментария 2 комм.

Популярные

По порядку

0

О чем статья?

Ответить
–1

А что бывает аналоговый скайнет?

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Голосовой помощник выкупил
компанию-создателя
Подписаться на push-уведомления
{ "page_type": "default" }