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

Как разработчик программного обеспечения, только часть вашего дня всегда посвящена написанию кода. Часто львиная доля вашего времени тратится на исправление ошибок, которые вы написали (если вам повезло) или тех, которых вы не исправляли (если вы большинство из нас), или на чтение кода, написанного другими, чтобы помочь им избежать ошибок.

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

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

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

  1. Прежде всего, постарайтесь вслух описать ошибку. Если у вас есть резиновая уточка под рукой, скажите ему, что не так, и я обещаю, что он вас выслушает, не перебивая. На части пути у вас уже может быть момент эврики. Если нет, не стесняйтесь поговорить с другим человеком. На самом деле разговор с уткой или кем-либо еще заставляет вас задействовать другую часть вашего мозга.
  2. Совершите небольшую прогулку. Время здесь является ключевым моментом. Есть соблазн сдаться, когда проблемы усложняются, и я вовсе не это предлагаю. Возьмите 15 минут, а не несколько дней. Часто вы застреваете в туннельном зрении, поэтому короткий перерыв может подарить вам глаза.
  3. Спросите себя, что изменилось с момента последней работы? Используйтеgit log, чтобы просмотреть историю изменений, а затем вернитесь к фиксации, в которой работал. Вы можете сравнивать файлы и использовать разницу, чтобы увидеть, что изменилось. Иногда новый код не содержит ошибок, он просто их обнаруживает! Остерегайтесь острого пальца обвинения, поскольку он может указывать прямо на вас.
  4. Где именно сломано? Вы не сможете что-то исправить, пока точно не узнаете, где что-то сломалось. Для этого существует бесконечное количество инструментов: точки останова, распечатка операторов журнала и т. Д. Инструменты разработчика, тем не менее, являются лучшими. Правильно выбирайте оружие и по-настоящему освоитесь с ним. Если у вас есть уверенность, их будет легче использовать, когда все кажется сломанным.
  5. Console.logs: никто не должен оставлять их в поставляемом коде. Как обычно. Я смотрю на тебя, Pinterest.
  6. Если вы фронтенд-разработчик, то большая часть отладки, вероятно, будет связана с состоянием. Инструменты разработки React могут позволить вам подключаться и проверять переменные состояния по мере того, как что-то меняется на экране. Ember и Angular имеют похожие инструменты разработки, и я предполагаю, что Vue тоже. Эта мгновенная обратная связь позволяет ускорить итерационный процесс, когда нужно точно определить, где или, что более важно, когда возникают ошибки. Redux также имеет потрясающие инструменты для разработки, которые помогут прояснить происходящее.
  7. Сначала обратитесь к документации за ответами. Только после просмотра документации и ничего не найденного можно переходить в Stack Overflow. Если вы пойдете туда первым, не имея принципиального понимания вещей, вы окажете в будущем себе медвежью услугу. Вы можете встретить множество вводящих в заблуждение и явно неправильных советов, которых не будет в официальной документации.
  8. Сначала попробуйте самое глупое, чтобы проверить свои предположения. Переменные жесткого кода, используйте данные фикстур или любые другие вещи, которые вы бы использовали для модульного теста. Удалите из ввода все слои, которые изменяют ожидаемый результат. В конце концов вы найдете слой, где все работает не так, как вы ожидали.
  9. Разбейте проблему на мельчайшие компоненты, чтобы понять, как работает каждая из них. Проверьте эти фрагменты кода в своем репозитории Github, чтобы вы могли к ним вернуться. Вы не только решаете проблему, которая у вас есть сейчас, но и разрабатываете арсенал решения проблем.
  10. Если ничего не помогает, поищите точное сообщение об ошибке в Google. Это может быть известная ошибка или причуда, которая даже не связана с вашим кодом. Тогда не стесняйтесь грозить своими крошечными кулачками в небеса или в общее направление того, кто написал этот код.
  11. Если он работал локально, но не работал после развертывания, вероятно, это переменная среды.
  12. Если он работает на вашем компьютере, но не работает на другом, это также может быть связано с окружающей средой. Для любого проекта, запущенного на Node, рекомендуется время от времени стирать каталог модулей Node и очищать кеш.
  13. Если вы обнаружите, что на вашем компьютере что-то загадочным образом часто выходит из строя, не забывайте часто обновлять операционную систему и не допускайте слишком долгого обновления ваших инструментов разработчика. Нет ничего более разочаровывающего, чем осознание того, что вы просто использовали действительно старую версию yarn. Это особенно верно, если вы что-то делаете с ReactNative на Mac, поскольку от xcode есть скрытая зависимость.

Кстати, рекомендуется переформатировать жесткий диск примерно раз в несколько лет. Обновите ОС до последней версии и переустановите все. Через несколько лет вы обнаружите, что вам может даже не понадобиться модернизированная машина. Это работает как шарм и сделает ваш кошелек счастливым! Плюс меньше старых ноутбуков на помойку.

Надеюсь, это поможет! Не стесняйтесь делиться со мной своими любимыми советами по отладке в комментариях!