Понимание легаси-кода с помощью ИИ
Перейти к разделу
Код, который никто не писал (но от которого все зависят)
В каждой компании есть тот самый репозиторий. Может быть, это внутренний инструмент на PHP 5, работающий на сервере под чьим-то столом. Может быть, это Java-монолит 2012 года с тремястами классами и нулём тестов. Может быть, это Python-скрипт, запускающий ночной импорт данных, и никто точно не знает, что он делает. От него зависят все. Никто его не понимает. И никто не хочет на него смотреть.
Традиционно у вас два варианта: потратить недели на чтение каждой строки или написать новую систему с нуля (и обнаружить, что старая делала вещи, о которых вы не знали). ИИ открывает третий путь: систематическое понимание существующего кода за долю времени.
Легаси-код — это не плохой код. Это код, переживший свою документацию. Значит, он что-то делал правильно — ваша задача выяснить, что именно.
Извлечение архитектуры: от хаоса к диаграмме
Начните с передачи ИИ структуры директорий проекта и ключевых файлов. Не просите сразу детального анализа каждой функции — начинайте сверху. «Какие слои есть в этом проекте? Где точка входа? Какие внешние сервисы он вызывает?» ИИ может вывести архитектуру из структуры директорий, импортов и конфигурационных файлов — архитектуру, которую вы собирали бы вручную целый день.
Практический подход: используйте tree или ls -R для получения структуры директорий. Добавьте файлы вроде package.json, pom.xml или requirements.txt. Попросите ИИ сгенерировать Mermaid-диаграмму основных компонентов и их связей. За пять минут у вас есть карта, которая иначе потребовала бы полдня реверс-инжиниринга.
Используйте Claude или Cursor с контекстом всего репозитория. Современные AI-инструменты могут анализировать сотни файлов одновременно — используйте это преимущество. Плагины для IDE, такие как Cursor или Windsurf, могут индексировать весь проект.
Картирование зависимостей: что от чего зависит
В легаси-коде часто есть скрытые зависимости, которых вы не найдёте ни в каком конфигурационном файле. Захардкоженные URL-адреса, неявные требования к окружению, часовые пояса, прописанные глубоко в коде. ИИ может просканировать код и выявить эти скрытые связи. Промпт: «Найди все внешние зависимости — API-вызовы, подключения к базам данных, файловые операции, переменные окружения».
Особенно важно понимание потоков данных. Откуда поступают данные? Как они трансформируются? Куда идут? Попросите ИИ создать диаграмму потоков данных — она часто раскрывает вещи, на отслеживание которых вручную ушли бы дни. Например, скрытый побочный эффект, когда функция расчёта цены также записывает в таблицу логов.
Бизнес-логика: понимание правил, скрытых в коде
Самая ценная часть легаси-кода — не технические детали, а бизнес-логика. Правила, накопившиеся годами в виде ветвлений if-else, специальных случаев и хотфиксов. ИИ может извлечь эти правила и переформулировать их в читаемый вид. Промпт: «Извлеки все бизнес-правила из этого класса. Для каждого правила укажи: что оно проверяет, каков результат и какие исключения существуют».
Остерегайтесь галлюцинаций. ИИ может неверно интерпретировать бизнес-логику, особенно неявные правила. Всегда проверяйте, что извлечённые правила соответствуют реальному поведению — например, запустив существующий код с тестовыми данными. ИИ помогает понять, что код, вероятно, делает. Подтверждение — ваша задача.
Документация на выходе: основа для следующих шагов
Результатом этой фазы должен быть документ, охватывающий четыре области: архитектурный обзор (слои, компоненты, коммуникация), карта зависимостей (внешние сервисы, базы данных, API), список бизнес-правил (извлечённых из кода) и инвентарь рисков (что хрупко, что не имеет тестов, что захардкожено). Этот документ — ваша основа для всего, что последует: рефакторинга, тестирования и модернизации.
При анализе легаси-кода начинайте с точек входа (main, HTTP-обработчики, cron-задачи) и двигайтесь внутрь. «Какие точки входа есть в этом проекте? Что происходит, когда HTTP-запрос попадает на /api/orders?» лучше, чем «объясни весь код».
Выберите один легаси-проект, к которому у вас есть доступ. С помощью ИИ: 1) Сгенерируйте архитектурную диаграмму (Mermaid). 2) Определите все внешние зависимости. 3) Извлеките как минимум 3 бизнес-правила из самого сложного класса. 4) Создайте список «скрытых сюрпризов» — вещей, которых вы не ожидали. Сравните вывод ИИ со своим пониманием. Где ИИ вас удивил?
Подсказка
Начните с меньшего модуля, а не со всего монолита. ИИ может работать с большими проектами, но результаты лучше, когда вы работаете по частям.
Выберите самый сложный или наименее документированный модуль в вашей легаси-кодовой базе. Вставьте его в ИИ (Claude имеет контекст 200K токенов, справляется с большими файлами) с промптом: «Объясни этот код. 1) Что он делает — высокоуровневая цель, 2) Ключевые функции и их роли, 3) Поток данных — что входит, что выходит, 4) Потенциальные проблемы или code smells, 5) Зависимости от других модулей». Сравните объяснение ИИ со своим пониманием — есть ли что-то удивительное?
Подсказка
Документируйте процесс и результаты — они послужат справочником для похожих задач в будущем.
Выберите один модуль из легаси-проекта. Промпт для ИИ: «Проанализируй этот код и создай диаграмму потоков данных в формате Mermaid. Включи: откуда поступают данные (API, БД, файлы), как они трансформируются, куда идут (БД, API, логи) и какие побочные эффекты существуют (запись в кэш, уведомления, журнал аудита)». Сравните диаграмму со своей мысленной моделью. Где ИИ вас удивил?
Подсказка
Побочные эффекты — самый частый сюрприз. Функция «calculateTotal» может также писать в журнал аудита или отправлять уведомление — ИИ раскрывает эти скрытые связи.
- ИИ за минуты выводит архитектуру, на которую вручную ушёл бы целый день
- Картирование зависимостей выявляет скрытые связи, не найденные ни в какой документации
- Бизнес-логика, скрытая в коде, — самая ценная часть легаси-системы
- Всегда проверяйте выводы ИИ — галлюцинации с легаси-кодом распространены