EN Прислать проект
Все статьи

Что такое рефакторинг и как делать его без поломок

Что такое рефакторинг простыми словами: изменение устройства кода без изменения поведения. Чем он не является, зачем окупается и как делать его безопасно.

· 4 минОсновыКод

Рефакторинг — это изменение устройства кода без изменения того, что код делает. Пользователь не должен заметить никакой разницы: те же экраны, те же кнопки, тот же результат. Меняется только то, как всё устроено внутри.

Если коротко ответить на вопрос «что такое рефакторинг», это уборка в мастерской. Инструменты те же, станки те же, но теперь понятно, где что лежит, и следующая работа идёт быстрее.

Чем рефакторинг не является

Слово часто используют для всего подряд, и из-за этого его боятся. Вот что рефакторингом не считается.

  • Переписывание с нуля. Рефакторинг идёт маленькими шагами по работающему коду, а не заменяет его новым.
  • Добавление функций. Если после изменения приложение умеет что-то новое, это разработка, а не рефакторинг.
  • Исправление ошибок. Найти баг во время рефакторинга — обычное дело, но чинить его лучше отдельным шагом. Иначе непонятно, что изменило поведение: исправление или случайная поломка.
  • Смена дизайна. Перекрасить кнопки — это работа над интерфейсом. Рефакторинг интерфейса может разбить огромный компонент на части, но выглядеть всё должно так же.

Главный критерий простой: поведение до и после одинаковое. Если ты не можешь это проверить, ты не рефакторишь, а надеешься.

Как выглядит рефакторинг на практике

Типичные шаги, особенно в коде, написанном с ИИ:

  • Убрать дубли. Одна и та же функция расчёта цены скопирована в три файла, и в одном из них уже исправлена ошибка, а в двух других нет. Оставляешь одну версию, остальные места вызывают её.
  • Разбить огромный файл. Компонент на полторы тысячи строк, где и загрузка данных, и форма, и таблица, и модальные окна, делится на несколько понятных частей.
  • Дать имена. data2, handleClick3 и temp превращаются в unpaidInvoices и submitPayment. Число 86400 в коде получает имя SECONDS_IN_DAY.
  • Убрать мёртвый код. Функции, которые никто не вызывает, и закомментированные куски, оставшиеся от прошлых попыток.
  • Развести слои. Запросы к базе, бизнес-правила и отрисовка, перемешанные в одном месте, разносятся по своим.

Зачем это нужно и почему окупается

Рефакторинг сам по себе не приносит пользователям ничего нового, поэтому его легко откладывать. Окупается он в следующих изменениях.

В запутанном коде каждая новая функция стоит дороже предыдущей: нужно найти все места, где что-то задето, и надеяться, что не пропустил. В аккуратном коде изменение делается в одном месте и ломает меньше.

С ИИ-ассистентами это работает ещё заметнее. Модель видит ограниченный кусок проекта. Если логика размазана по десяти файлам с похожими именами, ассистент правит одну копию и не трогает остальные. В маленьких файлах с понятными именами он ошибается реже и быстрее находит, что менять.

Как делать рефакторинг безопасно

  1. Сначала зафиксируй поведение. Лучше всего — автотестами на то, что трогаешь. Если тестов нет, запиши руками несколько сценариев проверки: войти, создать заказ, оплатить, отменить.
  2. Сохрани точку возврата. Закоммить рабочее состояние в git до начала. Если что-то пойдёт не так, ты вернёшься за секунды.
  3. Маленькие шаги. Один шаг — одно изменение: переименовал, проверил, закоммитил. Вынес функцию, проверил, закоммитил. Большой рефакторинг за один заход почти всегда заканчивается фразой «где-то что-то сломалось».
  4. Не смешивай с новыми функциями. Сначала приведи код в порядок, потом добавляй. Или наоборот, но не одновременно.
  5. Ставь ИИ жёсткие рамки. Проси конкретно: «вынеси расчёт цены в отдельную функцию, поведение не меняй, ничего другого не трогай». Потом читай дифф. Ассистент любит заодно «улучшить» соседний код.
  6. Начинай с того, что часто меняется. Идеальный порядок в модуле, который никто не трогает годами, не окупится. Порядок там, где ты работаешь каждую неделю, окупится быстро.

Коротко

  • Рефакторинг — изменение устройства кода без изменения его поведения.
  • Это не переписывание, не новые функции и не исправление багов.
  • Он окупается тем, что каждое следующее изменение дешевле и безопаснее, а ИИ-ассистенты ошибаются реже.
  • Делать его стоит маленькими шагами с проверкой и коммитом после каждого.
  • Начинать лучше с кода, который ты меняешь чаще всего.

SUBXCAT помогает привести код в порядок без остановки разработки и без сюрпризов для пользователей.

Хочешь, сделаем это за тебя?

Расскажи о проекте ассистенту — через пять минут будет примерная смета, через 48 часов разбор.

Созвон с командой 20 минут: инженер, дизайнер и маркетолог посмотрят на проект вместе с тобой.
Записаться на звонок