Стиль программирования: ЧаВо

Что такое стиль программирования?

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

Полный список правил можно найти тут.

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

Вы будете проверять все мои решения на соответствие стилю?

Да.

Если нам будет сложно понять ваш код или если на это будет уходить слишком времени, мы будем ставить вам вердикт Нарушение правил оформления программ или Решение отклонено с комментарием о том, что именно не так.

Но зачем? Я и так всё понимаю в своей программе

Это ненадолго.

Сейчас ваши программы редко превышают 30-50 строк. Такой небольшой код можно целиком держать в голове. Довольно скоро размер ваших программ будет достигать нескольких сотен строк. А с тем, чтобы держать в голове одновременно столько кода, не справляются даже многие профессиональные программисты.

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

Но сейчас-то мне это не нужно

Во-первых, это не совсем так. Например:

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

Помимо этого ваш код читают преподаватели. Хороший код позволяет нам:

  • Быстро разобраться в вашей программе и поставить ОК вашему решению
  • Быстро найти в вашем коде ошибку, если вам понадобится помощь
  • Заметить потенциальные проблемы в том, как вы пишите код, и рассказать вам как не наступить на эти грабли потом на олимпиаде

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

За что мне это?

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

Хорошо, я готов следовать стилю. Как?

Для начала стоит посмотреть на примеры хорошего и плохого кода в списке правил оформления. Правила про незнакомые вам возможности Python пока можно игнорировать.

Проверка стиля производится только после того, как ваша программа прошла все тесты и происходит в два этапа:

  1. Тестирующая система автоматически проверяет ваш код ваш код на простые ошибки:
    • Если ошибки обнаружены, ваша программа получит статус Нарушение правил оформления программ. В этом случае вам надо исправить ошибку и послать код ещё раз.
    • Если всё хорошо, ваша программа получит статус Ожидает проверки
  2. Преподаватели читают ваш код:
    • Если что-то надо исправить, мы ставим статус Решение отклонено с комментарием, что именно не так
    • Если всё хорошо, то мы ставим статус ОК

Частая ошибка: сначала писать код кое как и исправлять стиль перед отправлением на проверку. Так вы добровольно:

  • Отказываетесь от преимущества для себя, постоянно читая нечитаемый код в процессе его написания
  • Замедляете выработку привычки писать сразу понятно

Я всё правильно написал, но ejudge говорит, что что-то не так. Что делать?

В протоколе проверки будет указана причина, но по-английски. При этом в нём будут указаны конкретная строка и место ошибки. Вот пример протокола:

000310.py:3:12: E222 multiple spaces after operator
    list1 =  list1[x:] + list1[:x]
           ^


Конкретно отсюда можно узнать, что проблема в 12-й строке сразу после знака =. Конкретно — два пробела вместо одного.

Если не получается самостоятельно разобраться в причине, спросите у преподавателя.

Здесь нет ответа на мой вопрос. Что делать?

Задать его преподавателю. Если вопрос возникнет не только у вас, мы добавим ответ на эту страницу.