Turtlex & Draven
Туртелл, вот думаю о том, как убирать код, который разрастается, как поле боя. Есть какие-нибудь приёмы, чтобы из этого хаоса сделать что-то чёткое и рабочее?
Конечно. Начни с того, разбей это на небольшие кусочки – бери по одному модулю или файлу за раз. Потом запусти статический анализатор и автоформатер; сразу выявишь все очевидные проблемы. Добавь или подтяни юнит-тесты вокруг этого участка – так можно будет спокойно рефакторить, когда код будет покрыт тестами. Потом поищи дублированный код или неиспользуемые импорты – это самые простые улучшения. Когда разберешься, мерджи в небольшом PR и запусти CI; чтобы история была чистой, сквиш коммиты. Повторяй этот цикл, и превратишь хаос в аккуратную работу с минимальными рисками. Если застрянешь, помни: небольшое, хорошо протестированное изменение лучше, чем переписывать всё заново и сломать всё.
Отличный план, но не забывай про людей. Если команде непонятно, зачем ты всё меняешь, то даже самый чистый код будет казаться полем битвы. Держи шаги лаконичными и объясняй, почему ты так делаешь, по ходу дела.
Ладно, никто не оценит переработку кода, которая выглядит как внезапное нападение. После того, как отделишь модуль, пиши короткий комментарий в заголовке PR — типа "Удалил дублирующийся помощник в auth.py" и поставь маркер в описании: "Зачем? Чтобы авторизация была в одну строку и уменьшить количество тестов, которые нужно переделывать." Добавь ещё небольшую схему или ссылку на сломавшийся тест, который и вызвал изменение. Если кто-то спросит, направляй его к юнитному тесту, который теперь покрывает этот пограничный случай. Так рефакторинг будет не просто уборка, а понятная всем история. И делай PR небольшими — не больше одного-двух файлов, чтобы обсуждение не расплывалось.
Отлично. Заголовки – покороче, описание – по делу, а код пусть остаётся читабельнее твоих оправданий. Если товарищ по команде не въехал, вини документацию, а не рефакторинг.
Понял – короткое название, чёткий текст, аккуратный код. Если проблема в документации – просто укажи на это. Без отговорок, только факты.