Рефакторинг с AI: как безопасно менять код, которого все боятся
Перейти к разделу
В каждом проекте есть тот файл, которого никто не касается. «2000 строк, нет тестов, автор давно ушёл». AI идеален для этого — но только с чётким процессом. Без процесса AI-рефакторинг навредит.
Рефакторинг без тестов — хождение по канату без сетки. AI поможет написать тесты быстро и превратит опасную задачу в безопасную.
Шаг 1: Понимание — составьте карту
«Проанализируй файл. Что делает? Зависимости? Риски? Побочные эффекты?» AI картирует код за секунды. Вы получаете карту вместо джунглей.
# Prompt for pre-refactoring analysis:
Analyze src/services/order-processor.ts.
I want to know:
1. Main purpose of the file
2. All public functions and what they do
3. Dependencies on other modules
4. Side effects (DB writes, API calls, events)
5. Risky areas (missing error handling,
magic numbers, tight coupling)
6. Suggest the order to refactor in
Be concise and specific.Критично. Перед рефакторингом нужно понять код. AI прочитает за секунды, обзор иначе — часы.
Шаг 2: Страховочная сеть — тесты текущего состояния
«Напиши тесты, фиксирующие поведение. Не хочу менять функциональность — хочу знать, когда что-то сломается». Система сигнализации для рефакторинга.
Эти тесты не проверяют корректность — проверяют, что поведение не изменилось. Даже если текущее поведение — баг, тест поймает изменение.
# Prompt for safety net tests:
Write unit tests for orderProcessor.
- Test ALL existing code paths
- Include happy path, error states, edge cases
- Test current behavior (even if possibly buggy)
- Name tests descriptively:
'should return X when Y'
- After writing, RUN tests and fix failures
- DO NOT change implementation — just testТипично: 20-40 тестов за 5-10 минут. Вручную — полдня-день. Теперь есть страховка.
Шаг 3: Постепенные изменения
НИКОГДА не рефакторьте всё сразу. Маленькие шаги, тесты после каждого.
- Типичные шаги (по одному):
- 1. Извлечь функцию — тесты
- 2. Переименовать переменные — тесты
- 3. Добавить типы — тесты
- 4. Удалить мёртвый код — тесты
- 5. Разделить на модули — тесты
- 6. Заменить магические числа — тесты
- 7. Добавить обработку ошибок — тесты
# Prompt for gradual refactoring:
Refactor orderProcessor. After each step
run tests. If anything fails, fix before
the next step.
Step 1: Extract calculateShipping from lines 89-145
into a separate function.
Step 2: Rename: o -> order, d -> discount,
s -> shippingCost
Step 3: Add TypeScript types to all parameters
and return values.
Step 4: Replace magic number 0.15 with constant
TAX_RATE.
ALWAYS run tests between steps.
One step = one commit.Шаг 4: Документирование
После рефакторинга — документация. «Напиши документацию: назначение, API, ограничения, что изменили и почему».
Чего никогда не делать
- «Рефактори всё сразу» — катастрофа даже с AI
- Без тестов — нет сетки
- Много изменений в одном коммите — некуда откатиться
- Слепое доверие — AI делает тонкие ошибки
- Менять поведение при рефакторинге — рефакторинг = та же функциональность
Реальные результаты
3500-строчный модуль за 2 дня. AI: 35 тестов, 12 шагов рефакторинга. Каждый: изменение -> тесты -> ревью -> коммит. Результат: та же функциональность, -60% размер, типизирован, с документацией.
Без AI — 8-10 дней. Ключевое: AI генерирует тесты за минуты вместо часов. Без них рефакторинг невозможен.
Лучший рефакторинг — скучный. Маленькие шаги, тесты после каждого, никаких сюрпризов. AI делает скучное — вы принимаете решения.
Karel Čech
Разработчик и AI-консультант. Помогаю техническим командам внедрять AI в ежедневный рабочий процесс — от воркшопов до долгосрочных стратегий.
LinkedIn →Будьте в курсе AI-тенденций
Практические советы по AI для команд разработчиков. Никакого спама, отписка в любой момент.
Понравилась статья? Погрузитесь глубже с нашим курсом:
Похожие публикации
AI на legacy-коде: как модернизировать кодовую базу старше вашей команды
Legacy-код — место, где AI даёт наибольший ROI. 10 000 строк без тестов и документации? Именно здесь AI экономит недели — если знать как.
AI для всей команды: общие рабочие пространства, коллективные агенты и командные воркфлоу
Каждый разработчик промптит по-своему. Это расточительно. AI гораздо мощнее, когда команда использует его координированно — вот как.
Облачные агенты на практике: Devin, Codex и когда имеет смысл AI-разработчик в облаке
Полностью автономные AI-разработчики в облаке обещают многое. Но реально справляются лишь со специфическими задачами. Где работают, где нет, и как использовать эффективно.
Готовы начать?
Бесплатная 30-минутная консультация — вместе определим, где AI больше всего поднимет уровень вашей команды.
Записаться на бесплатную консультацию