Module (93%)
Section (79%)

Несколько полезных советов

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

  1. Попробуйте рассказать кому-нибудь (например, своему другу или коллеге), что Ваш код должен делать и как он ведет себя на самом деле. Будьте конкретны и не упускайте деталей. Ответьте на все вопросы, которые задает Ваш помощник. Вы, вероятно, поймете причину проблемы, рассказывая свою историю, поскольку речь активирует те части вашего мозга, которые остаются бездействующими во время кодирования. Если ни один человек не может помочь Вам с этой проблемой, используйте вместо него желтого резинового утенка. Мы не шутим - обратитесь к статье в Википедии, чтобы узнать больше об этом часто используемом методе: Метод утенка.
  2. Попытайтесь изолировать проблему. Вы можете извлечь ту часть кода, которая предположительно несет ответственность за Ваши проблемы, и запустить ее отдельно. Вы можете закомментировать части кода, которые скрывают проблему. Присваивайте переменным конкретные значения вместо того, чтобы читать их из ввода. Проверьте свои функции, применяя предсказуемые значения аргументов. Тщательно проанализируйте код. Читайте его вслух.
  3. Если ошибка появилась недавно и не обнаруживалась ранее, проанализируйте все изменения, которые Вы внесли в свой код - причиной может быть одно из них.
  4. Сделайте перерыв, выпейте чашку кофе, возьмите собаку и выйдите на прогулку, почитайте хорошую книгу минуту или две, позвоните своему лучшему другу - Вы будете удивлены, как часто это помогает.
  5. Будьте оптимистом - в конце концов Вы найдете ошибку; мы обещаем.


Модульное тестирование - более высокий уровень кодирования

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

Короче говоря, модульное тестирование предполагает, что тесты являются неотъемлемыми частями кода, а подготовка тестовых данных является неотъемлемой частью кодирования. Это означает, что когда Вы пишете функцию или набор взаимодействующих функций, Вы также обязаны создать набор данных, для которых поведение вашего кода предсказуемо и известно. Более того, Вы должны снабдить свой код интерфейсом, который может использоваться автоматизированной средой тестирования. При таком подходе за любой поправкой, внесенной в код (даже наименее существенной), должно следовать выполнение всех модульных тестов, сопровождаемых Вашим исходным кодом.

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

До встречи!