Наткнулся я вчера вот на этот пост. И так как сам постоянно провожу код-ревью у студентов, то стало интересно посмотреть на то, как другие проводят код-ревью на Пикабу. В общем...
В первых же минутах видео автор радостно создаёт константу с именем 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, это хорошо, что вы хотите делиться знаниями и помогать людям в обучении. Дело благое. Но ради всего святого, пожалуйста, не учите новичков думать жопой и писать ногами. Потом очень сложно переучивать обратно. У вас видео под эгидой "для тупых" - без проблем. Но суть ведь в том, чтобы даже тупой смог научиться делать нормально, разве нет? В интернете и так уже хватает разных Хауди Хо. Давайте нормальный контент делать, полезный :)