🧑‍💻 Сегодня в роли патологоанатома. На операционном столе — репозиторий с 14 играми на Python.

Наткнулся на GitHub-сборник классики: Pacman, Tetris, Flappy Bird... всё на Python. С одной стороны — респект автору, всё работает. С другой — это идеальный пример, набитый классическими «болячками», на которых можно учиться.

Давайте препарируем пару самых интересных случаев. Не для критики, а для образовательных целей. Чем работающий код отличается от хорошего?

Пациент №1: Шашки и порочный круг импортов.

В коде есть классы Piece, Pawn и King. Пешка (Pawn) может стать королем (King). Оба наследуются от Piece. И чтобы превратить пешку в короля, автор делает вот так внутри метода класса Piece:

`# Checkers/Piece.py def _move(self, tile):

#...

if self.notation == 'p': if self.y == 0 or self.y == 7: from King import King # <--- АТАС! tile.occupying_piece = King(...) Диагноз: Импорт внутри метода! Так автор обошел циклическую зависимость (Piece импортирует King, а King импортирует Piece). Это симптом больной архитектуры. Фигура не должна знать о правилах своей "прокачки".

Лечение: Делегировать! Класс Board (доска) должен управлять правилами. Метод _move просто возвращает True, а уже Board проверяет, не пора ли пешке стать королем, и создает новый объект King. Так мы разрываем порочную связь.

Пациент №2: Flappy Bird и суп из глобальных переменных 🐤

`# Flappy Bird/game.py window_width = 600 #... pipeVelX = -4 bird_velocity_y = -9 birdAccY = 1

Диагноз: Классика. Глобальные переменные и «магические числа». Что такое -4? Что такое 1? Через неделю сам автор забудет. Менять баланс игры — адская боль, нужно выискивать эти цифры по всему коду.

Лечение: 1. Все константы — в отдельный класс GameConfig. 2. Всю логику и состояние (score, bird_velocity_y) — внутрь класса FlappyBirdGame и его атрибутов (self.score).

И вот так работающий код превращается в хороший. Разница — в архитектуре и подходе.

Разобрал еще 4 типовые ошибки из этого репо (управление ресурсами, смешение логики и отображения и др.) в статье с примерами.

👉 Читать про 6 ошибок новичка

А какие «костыли» из этого списка вы сами городили в начале пути? Признавайтесь 👇🏻``

🧑‍💻 Сегодня в роли патологоанатома. На операционном столе — репозиторий с 14 играми на Python.
Наткнулся на GitHub-сборник классики: Pacman, Tetris, Flappy Bird... всё на Python | Сетка — социальная сеть от hh.ru