Разработка
Урок 3

Рефакторинг и оптимизация кода

0 из 6
1
Фундамент
2
Погружение
3
Бизнес-кейс
4
Промпт
5
Инсайт
6
Практика
Фундамент

Почему рефакторинг важнее генерации

В Уроках 1-2 вы генерировали новый код. Но в реальной работе 70% времени уходит не на написание нового кода, а на чтение и доработку существующего. Код, который работает — это только начало. Код, который легко читать, менять и масштабировать — это цель.

Три вида улучшения кода:

Читаемость — непонятные имена переменных, функции на 200 строк, отсутствие комментариев. AI переименует, разобьёт на части, добавит документацию.

Производительность — алгоритм работает, но медленно. O(n²) вместо O(n), лишние запросы к базе, дублирование вычислений. AI найдёт узкие места и предложит оптимизацию.

Архитектура — всё в одном файле, жёсткие зависимости, нарушение принципов SOLID. AI предложит разделение на модули, внедрение паттернов, устранение связанности.

Золотое правило рефакторинга: меняй структуру, не меняя поведение. AI идеально подходит для этого — он перепишет код, сохранив логику, но улучшив форму.

Формула рефакторинга с AI: Код + Что не так + Как должно быть = Улучшенный код. Без второго и третьего элемента AI просто перепишет код «по-своему» — не факт, что лучше.

Погружение

4 паттерна рефакторинга с AI

В Уроке 2 вы описывали задачи для нового кода. Теперь учимся работать с существующим — и здесь нужны другие подходы:

Паттерн 1: «Объясни и улучши» (Explain & Improve)
Вставляете код и просите: «Объясни, что делает этот код, и предложи 5 конкретных улучшений с обоснованием». AI сначала разберётся в логике, потом предложит изменения. Это безопаснее, чем сразу «перепиши» — вы видите, что AI понял код правильно.

Паттерн 2: «Разбей монолит» (Split & Modularize)
Классика: функция на 150 строк, которая делает всё. Промпт: «Разбей эту функцию на 4-6 отдельных функций. Каждая должна решать одну задачу (Single Responsibility). Покажи итоговую структуру и вызов из главной функции.» AI выделит логические блоки, которые вы, возможно, не замечали.

Паттерн 3: «Оптимизируй по метрике» (Optimize by Metric)
Не просто «сделай быстрее», а конкретно: «Текущая сложность O(n²). Перепиши с O(n log n) или лучше. Объясни, какой алгоритм выбрал и почему». Или: «Этот запрос к БД выполняется 3 секунды. Предложи оптимизацию: индексы, изменение запроса, кэширование.»

Паттерн 4: «Приведи к стандарту» (Standardize)
Промпт: «Приведи этот код к стандарту [PEP8 / Airbnb ESLint / Google Style]. Добавь type hints, замени var на const/let, убери неиспользуемые импорты, примени деструктуризацию где уместно.» AI знает все стайл-гайды и применит их последовательно.

Важно: всегда проверяйте, что рефакторинг не сломал логику. Поэтому в Уроке 4 мы научимся писать тесты — лучшую страховку от поломок при рефакторинге.

Бизнес-кейс

Как команда ускорила Legacy-проект в 4 раза за неделю

Ситуация: веб-сервис на Python (Django), которому 5 лет. Код писали 8 разных разработчиков, документации нет, тестов мало. Главная проблема: страница каталога загружается 6 секунд — пользователи уходят.

Команда из 2 разработчиков использовала AI для рефакторинга:

День 1-2: паттерн «Объясни и улучши». Вставляли критичные файлы в AI, получали объяснение логики и список проблем. AI нашёл: 14 N+1 запросов, 3 неиспользуемых middleware, дублирование бизнес-логики в 5 местах.

День 3-4: паттерн «Оптимизируй по метрике». AI переписал ORM-запросы с select_related/prefetch_related, добавил кэширование для справочников, убрал лишние middleware. Загрузка: 6 сек → 1.5 сек.

День 5: паттерн «Разбей монолит» + «Приведи к стандарту». Главный views.py на 2000 строк разбит на 6 модулей по доменам. Type hints, docstrings, единый код-стайл.

Результат: загрузка 1.5 сек (было 6), код-ревью новых PR занимает 20 мин вместо часа (код стал читаемым), новый разработчик вошёл в проект за 3 дня вместо 2 недель.

Готовый промпт

Универсальный рефакторинг с AI

Этот промпт объединяет все 4 паттерна. Выберите нужные задачи рефакторинга и замените параметры в квадратных скобках:

ChatGPT / Claude / DeepSeek
Ты — senior-разработчик с опытом рефакторинга legacy-кодовых баз. Твоя задача — улучшить код, НЕ меняя его поведение.

КОД ДЛЯ РЕФАКТОРИНГА:
[вставьте код]

КОНТЕКСТ:
- Язык/фреймворк: [Python/Django, TypeScript/React, и т.д.]
- Что делает этот код: [кратко опишите]
- Известные проблемы: [медленно работает / сложно читать / дублирование / нет типов]

ЗАДАЧИ РЕФАКТОРИНГА (выбери нужные):
1. Читаемость: переименуй переменные и функции, разбей длинные функции, добавь комментарии
2. Производительность: найди узкие места, предложи оптимизацию с оценкой сложности (O-нотация)
3. Архитектура: примени принципы SOLID, убери дублирование, выдели модули
4. Стандарт: приведи к [PEP8 / Airbnb / Google Style], добавь типизацию

ФОРМАТ ОТВЕТА:
1. Краткий анализ текущего кода (что хорошо, что плохо)
2. Список изменений с обоснованием каждого
3. Рефакторированный код
4. Сравнение «было → стало» для ключевых метрик (читаемость, производительность, размер)
📝 Как использовать:

Начните с одной проблемы. Не просите AI исправить всё сразу — лучше 3 отдельных итерации (читаемость → производительность → архитектура), чем один гигантский запрос. Так вы контролируете каждое изменение и видите, что именно улучшилось на каждом шаге.

🤖 Открыть в AI-модели
Инсайт

Мысль дня

Рефакторинг — это не переписывание кода. Это его взросление. Как черновик текста превращается в статью через редактуру, так и рабочий код превращается в хороший код через рефакторинг. AI — ваш лучший редактор.
— Адаптировано
Практика

Отрефакторьте свой код в 3 итерации

Сегодня вы применяете 4 паттерна рефакторинга на практике. Задание из трёх шагов:

🔍 Шаг 1: Найдите плохой код

Возьмите из рабочего проекта функцию, которая вас раздражает: слишком длинная, непонятные имена, медленная. Если нет рабочего кода — попросите AI: «Сгенерируй пример плохого кода на 50 строк: функция обработки заказа с дублированием, без обработки ошибок, плохие имена переменных.»

🔧 Шаг 2: Применяйте паттерны по одному

Итерация 1: паттерн «Объясни и улучши» — пусть AI объяснит код и предложит 5 улучшений. Итерация 2: паттерн «Разбей монолит» — пусть AI разобьёт на 3-4 функции. Итерация 3: паттерн «Приведи к стандарту» — type hints, код-стайл, документация. Каждая итерация — отдельный запрос к AI.

📊 Шаг 3: Сравните «было → стало»

Попросите AI: «Сравни оригинальный код и финальную версию. Оцени по 5 критериям (1-10): читаемость, производительность, тестируемость, расширяемость, документация.» Обратите внимание: какой паттерн дал наибольший прирост качества?

Блок изучен!