376

Ответ на пост «Программирование на Python "для тупых" 008.2 Проверяем домашку»2

Наткнулся я вчера вот на этот пост. И так как сам постоянно провожу код-ревью у студентов, то стало интересно посмотреть на то, как другие проводят код-ревью на Пикабу. В общем...

В первых же минутах видео автор радостно создаёт константу с именем PASS. Не, я всё понимаю: Python различает регистр имён, pass и PASS - это физически разные вещи, код рабочий. Но использование зарезервированного слова в качестве имени объекта - ну за это же по рукам нужно бить, а не поощрять такое и не называть это правильным решением.


Начинается всё с PASS = '123456', потом появляется type = 'simple' и min = 5, и вот мы уже создали свой маленький уютный адочек в репозитории, в котором кроме нас самих никто никогда не разберётся. Дебажить такой код будет очень весело.


Никогда (!) и ни за что (!) не используйте зарезервированные слова в качестве названий своих объектов. На то они и зарезервированные, в общем-то. Можно нижнее подчёркивание в конец добавить, если уж сильно приспичит: `type_`, `min_`.

PEP8

На 11-й минуте гордо звучит фраза "Всё по PEP8". А вот и сам код, который "по PEP8":

Возможно, где-то в параллельной вселенной есть свой PEP8, которому этот код полностью соответствует.

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


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

not

"Оператор not ожидает, что справа у него будет True или False".


Всё бы здорово, вот только это неправда. Операндом у not может быть любой объект. Он приводится к логическому типу, затем полученное булево значение инвертируется. Примеры использования: not name, где name является строкой, not data, где data - это список...

Дублирование кода

Вот тут у меня окончательно сгорела жопа и дальше смотреть видео я уже не смог. Шла 12-я минута из 41.


Автор называет это "правильным решением" и учит писать код именно так. Я даже не буду разбирать проблему подробнее, но думаю, что многие из тех, кто изучает Python хотя бы 2-3 месяца, смогут легко написать в комментариях, почему такой код писать нельзя.

А почему так припекло?

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

@vrom1990, это хорошо, что вы хотите делиться знаниями и помогать людям в обучении. Дело благое. Но ради всего святого, пожалуйста, не учите новичков думать жопой и писать ногами. Потом очень сложно переучивать обратно. У вас видео под эгидой "для тупых" - без проблем. Но суть ведь в том, чтобы даже тупой смог научиться делать нормально, разве нет? В интернете и так уже хватает разных Хауди Хо. Давайте нормальный контент делать, полезный :)

Программирование на python

927 постов11.9K подписчиков

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу