Александр Гончаров. Чистый код: антипаттерны в питоне, и как с ними бороться
Vložit
- čas přidán 12. 09. 2024
- Александр Гончаров
Senior python developer, Reef Technologies
Чистый код: антипаттерны в питоне, и как с ними бороться
Код читают чаще, чем пишут. Каждая строчка, написанная нами и отправленная в "долгое плавание", будет прочитана - может, нашими коллегами, может, совершенно незнакомыми разработчиками. Поэтому код - это в том числе и время разработчиков, которые будут с этим кодом работать. Давайте сделаем этих людей чуточку счастливее!
В докладе рассмотрим самые распространённые антипаттерны и ошибки на Питоне, как с ними бороться и, главное, как заставить компьютер помогать нам в этой борьбе.
Спасибо за доклад!
Полезно было-бы знать кол-во строк в проектах, чтобы сравнивать отношение ошибок к строкам кода. 1000 ошибок для проекта в 100 строк кода не то же самое, что 1000 ошибок на 10000 строк кода
Для поиска клонов (copy/ paste) можно использовать инструмент jscpd
Как то очень странно, человек явно ставит знак равенства между "чистым кодом" и "аннотациями типов". А с чего вдруг?
Скорее здесь больше не про чистый код, а про его читаемость.
Я наоборот со временем пришел к тому, что совет обрабатывать конкретные исключения - один из самых вредных.
Конкретное исключение надо ловить только в том случае, если на него будет завязана отдельная логика. Если мы дергаем какой-то подозрительный кусок кода и нам интересно только выполнился он нормально, или нет - ловить надо Exception
Да и в той же гошке тип err никого не волнует кроме редких случаев, когда на него надо завязать какую-то бизнес-логику.
годнота
из полезного, узнал что в ruff можно все правила включить
40:28 Писать
*a: int = 1*
не нужно, это высшая степень маразма.
Кто-кто, а статический анализатор прекрасно понимает, что 1 - это целое.
Питон для того и придумали, чтобы он был лаконичным.
Вот джава строго типизированная, но при этом чудовищно многословная. Хотите везде писать int a = 1; -- вам туда.
Хотя и до джавистов начинает доходить что это маразм, см JEP 286.
I love print ❤🩹
Вот другие языки не могут все задачи решить строгими типами.
Так например в плюсах есть auto.
Аналогично в C# есть var.
Про джаву уже написали в комментах.
Остаётся только один вопрос кому и зачем выгодно превращать питон в кусок говна, а сообщество питонистов в зомби?
PS: Про геймдев. Любой школьник в курсе что векторы не только в физическом, но и в графическом движке 4-компонентные. Как и цвета.
Причину, по котороой питонское сообщество так активно обмазывается статической типизацией, лучше всего объясняет высказывание самого Гвидо:
Дорогой ценой я выучил урок: для небольших программ динамическая
типизация - благо. Но для более крупных программ необходим более дисциплинированный подход. И хорошо, когда язык предлагает такую дисциплину, а не говорит «Да делай ты что хочешь».