Вэб ИИ не всемогуч! Спасаю кодера
Сайт работал. Поиск летал. База переехала на Turso. Всё было зашибись. И тут я полез в код и ужаснулся.
Файл main.rs весил 1134 строки. А content.rs разросся до 2063 строк. В одном файле лежало всё: чтение постов, обложки, теги, работа с Markdown, обработчики страниц. Это как шкаф, куда свалили всё в кучу: носки, молотки, документы. Найти что-то нереально. А добавить что-то новое - страшно, потому что можно случайно сломать соседнее.
Плюс у меня в планах аналитика, чат, регистрация. Если оставить как есть, main.rs распухнет до 5000 строк. ИИ просто не сможет это переварить. Когда файл огромный, нейросеть теряет контекст, путается и начинает ломать то, что уже работает.
Поэтому я сел за рефакторинг.
Как резал
Не одним взмахом. По шагам. Сделал 15+ коммитов. Каждый шаг - это бэкап файла, проверка cargo check и прогон всех 44 тестов. Если что-то падало, скрипт сам откатывал изменения назад. Сайт вообще не заметил процеса. Работал как часы.
Вырезал по кусочкам. Сначала простые функции в отдельную папку. Потом разобрал content.rs на 8 модулей. Потом вынес рендеринг страниц и обработчики запросов.
Что в итоге
main.rs сдулся с 1134 строк до 153. Там остался только запуск сервера и роутер. content.rs вообще превратился в 17 строк (просто карта модулей), а сам код разложил по файлам. Самый большой теперь весит 570 строк.
44 теста на месте. Ни одной регрессии. Бенчмарки не просели.
Грабли
Канешно, без этого не обошлось. При вырезании структур я забыл сделать поля публичными. В одном файле всё было видно, а после разрезания - нет. Пришлось везде добавлять pub. Забыл импорты. Clippy орал как резаный на неиспользуемый код.
Но самый цирк был, когда компилятор Rust выдал Internal Compiler Error. Просто взял и упал. Я чуть не поседел. Думал, всё, приехали, я сломал Раст. А оказалось, это баг самого компилятора. Запустил еще раз - прошло.
Зачем всё это
Чтобы завтра я мог спокойно добавить аналитику. Создал новый файл handlers/analytics.rs на 100 строк, подключил, и всё. main.rs не трогаю. ИИ видит файл в 200-300 строк, понимает его целиком и пишет нормальный код. А не пытается запомнить телефонный справочник.
Рефакторинг - это не про «сделать красиво». Это про то, чтобы завтра можно было строить дальше и не развалить всё к чертям.
Ушло на это часов семь. Было пять откатов. Но это того стоило.