Разработка с AI
Рефакторинг с AI: от legacy к чистому коду
Legacy-код стоит дорого: медленная разработка, страх изменений, выгорание команды. AI снижает стоимость рефакторинга в 3-5 раз - но только если инженер понимает, что делает. Blindly accepted AI code = legacy создаётся быстрее, чем раньше.
- GitHub Copilot исследования показывают: разработчики принимают ~27% предложений Copilot без модификации.
- Из них ~30% содержат баги по данным 2023 года.
- Критическое отношение к AI-коду — не паранойя, а профессионализм.
Предварительные знания
Стратегия рефакторинга с AI
AI-ассистенты (GitHub Copilot, Claude, ChatGPT) не заменяют понимание кода - они ускоряют рутинные преобразования. Ключевой принцип: AI генерирует изменения, **инженер верифицирует** их корректность. Без понимания того, что меняется, AI-рефакторинг опасен.
**Красные флаги AI-рефакторинга:** 1. AI изменил сигнатуру функции без предупреждения 2. AI добавил зависимости, которых не было 3. AI удалил обработку edge-cases «для упрощения» 4. AI переименовал публичные поля/методы. Всегда проверяйте diff тщательно, а не просто «доверяйте AI».
AI отрефакторировал функцию и изменил её возвращаемый тип с `Promise<boolean>` на `Promise<{success: boolean}>`. Что делать?
Паттерны промптов для рефакторинга
Качество рефакторинга с AI напрямую зависит от качества промптов. Расплывчатые запросы дают расплывчатые результаты. Специфические, структурированные промпты с явными ограничениями дают предсказуемые и безопасные результаты.
**Chain of Thought для рефакторинга:** попросите AI сначала объяснить, что он собирается изменить («Сначала опиши план изменений, не пиши код»), затем реализовать. Это даёт возможность скорректировать направление до того, как AI написал 200 строк кода не в том направлении.
Вам нужно отрефакторировать 500-строчный класс с 20 методами. С чего начать при работе с AI?
Безопасная верификация AI-изменений
Принятие AI-сгенерированного кода без верификации - один из главных анти-паттернов. Инженер несёт ответственность за каждую строку, независимо от того, кто её написал - человек или AI. Систематическая верификация делает AI-рефакторинг безопасным.
**AI-ассистент как pair programmer:** думайте об AI как о пайр-программисте, который быстро печатает, но иногда делает ошибки и не знает весь контекст проекта. Ваша роль - навигатор: определять направление, проверять решения, замечать то, что AI не видит.
После AI-рефакторинга все тесты прошли. Можно ли принять изменение без дополнительной проверки?
Ключевые идеи
- AI ускоряет рефакторинг, но инженер отвечает за каждую строку кода
- Специфические промпты с явными ограничениями > расплывчатые «улучши это»
- Итеративный подход: маленькие изолированные изменения легче верифицировать
- Чеклист верификации: контракт, тесты, качество, безопасность
- Зелёные тесты необходимы, но не достаточны: всегда делай diff-review
- AI = быстрый pair programmer, который нуждается в навигаторе-инженере
Что дальше
AI меняет не только код, но и CI/CD пайплайны. Следующий шаг - автоматизация качества кода в CI: AI-driven code review, автоматическое обнаружение проблем до merge.
- AI в CI/CD — Автоматизация проверок кода в пайплайне с использованием AI-инструментов
- Пределы AI — Когда AI-рефакторинг неприменим: сложная бизнес-логика, критические системы
Вопросы для размышления
- Есть ли в вашем проекте код, который вы боитесь трогать? Как AI мог бы помочь с безопасным рефакторингом этого места?
- Как вы отличаете «AI написал хороший код» от «AI написал код, который выглядит хорошо»? Какой ваш процесс верификации?
- Если 30% AI-предложений содержат баги, как это меняет ваш подход к code review AI-generated кода?