# Рефакторинг с Claude: где код пора чистить

Канонический URL: https://zero2claude.ru/blog/refactor-with-claude
Дата: 2026-08-20
Теги: claude-code, новичкам, рефакторинг

Рефакторинг начинается не с правок, а с вопроса «что чистить». Учимся видеть запахи кода и просить Claude убрать их — по одному, без новых фич.

Код работает. Криво, с повторами, с переменными `a`, `tmp` и `data2`, но работает. И внутри шевелится мысль: «надо бы причесать». А следом — растерянность: причесать *что именно*? Где тут грязь, а где просто непривычный тебе код, который трогать не надо? Новичок чаще застревает не на «страшно сломать», а на «не вижу, за что хвататься».

Вот про это и поговорим. Рефакторинг — это улучшение кода без изменения того, что он делает: снаружи всё работает так же, внутри становится понятнее. Но прежде чем что-то менять, надо это «что-то» опознать. У плохого кода есть узнаваемые приметы — программисты называют их **запахами кода**. Научишься их различать — и Claude из «давай улучшим как-нибудь» превратится в напарника с чётким списком дел.

<Cover src="/blog/refactor-with-claude.jpg" alt="Захламлённый письменный стол с бумагами вперемешку и рядом тот же стол, аккуратно разобранный по стопкам — тёплый дневной свет, дерево и бежевые тона" />

## Запах кода — это не про «уродливо», а про «потом будет больно»

Запах не значит, что код сломан. Он значит, что с ним будет тяжело жить: трудно понять, легко сломать при правке, страшно расширять. Это как трещина в стене — стена ещё стоит, но чинить лучше сейчас. Вот приметы, которые видит даже новичок:

- **Копипаста.** Один и тот же кусок в трёх местах. Поправишь в одном — забудешь про два других, и привет, баг.
- **Имена-загадки.** `d`, `flag`, `doStuff()`. Через неделю ты сам не вспомнишь, что это.
- **Функция-простыня.** Тянется на два экрана и делает пять дел сразу. Чтобы понять одно, читаешь всё.
- **Лес вложенности.** `if` внутри `if` внутри `for` внутри `if`. Глаз теряется на третьем уровне.
- **Мёртвый код.** Функции, которые нигде не вызываются. Висят и путают.

Заметил хоть одну примету — вот тебе и адрес для рефакторинга. Не «весь файл уродливый», а конкретно: «здесь копипаста», «тут имя ни о чём».

## Пусть запахи ищет Claude

Хорошая новость: тебе не обязательно вынюхивать всё это вручную. У Claude перед глазами весь проект, и он видит повторы и мёртвый код надёжнее, чем глаз новичка. Начни не с правки, а с диагноза:

> «Посмотри на этот файл и скажи, что тут стоило бы почистить и почему. Только покажи проблемы, пока ничего не меняй».

Получишь список с объяснениями: вот тут копипаста, вот эта функция делает слишком много, эту переменную никто не использует. Это твоя карта. Теперь главное — не кидаться чинить всё разом.

<Callout type="tip">
Раздели диагноз и лечение на два отдельных шага. Сначала проси **только найти** запахи и объяснить их — так ты увидишь масштаб и сам решишь, что важно. И лишь потом проси **починить по одному пункту**. Если сразу сказать «найди и исправь всё», Claude перепашет полфайла одной кучей, и ты не разберёшь, что откуда взялось.

</Callout>

## Чистим по одному запаху — точными словами

Когда карта на руках, бери по одной проблеме за заход. Формулировки решают: чем точнее цель, тем меньше шансов, что Claude заодно перепишет логику. Сравни.

Слабо: «улучши этот файл». «Улучшить» можно как угодно — добавить функций, сменить поведение, переписать стиль. Получишь сюрприз.

Сильно — адресно под конкретный запах:

- Против копипасты: **«Этот повторяющийся кусок вынеси в одну функцию, поведение не меняй».**
- Против имён-загадок: **«Переименуй переменные в понятные имена: `d` → `daysLeft`, `calc` → `calculateTotal`».**
- Против простыни: **«Разбей эту длинную функцию на несколько коротких, каждая делает одно дело».**
- Против мёртвого кода: **«Найди и удали функции, которые нигде не вызываются».**

Волшебная добавка почти к любому запросу — **«поведение не меняй, только структуру»**. Эта фраза прямо говорит Claude: это рефакторинг, а не новая фича. И сразу проси показать, что именно поменялось: «после правки покажи изменения». Беглый взгляд на правки занимает секунды и спасает от часов поиска поломки — как именно читать это «было/стало», мы разбирали в посте [про diff](/blog/read-a-diff).

## Главное — не чинить всё сразу

Самая частая ловушка новичка — азарт. Claude выдал список из восьми запахов, и хочется одной командой «исправь всё». Не надо. Когда в одном заходе и переименование, и вынос функции, и удаление кода — а что-то отвалилось, ты не поймёшь, какая из правок виновата. Придётся откатывать весь ком.

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

- **Есть тесты?** Прогони их после каждого шага. Зелёные — значит ничего не задел. Это и есть страховка; как её завести с нуля — в посте [про тесты с Claude](/blog/tests-with-claude).
- **Тестов нет?** Тогда проверяй руками: запусти, прокликай то, что трогал. Медленнее, но обязательно.
- **Удачный шаг — сохрани.** Коммит на рабочей версии превращает любой следующий неудачный шаг в одну команду отмены.

<Callout type="warning">
Не смешивай рефакторинг и новую фичу в одном заходе. Это две разные задачи: первая меняет форму и не трогает поведение, вторая меняет поведение. Слепишь их вместе — при поломке не разберёшь, виновата чистка или новая функциональность. Сначала причешись на рабочей версии, потом отдельно добавляй новое.

</Callout>

## Ритм важнее героизма

Рефакторинг перестаёт пугать, как только ты перестаёшь смотреть на файл как на монолит «всё плохо» и начинаешь видеть отдельные запахи. Дальше всё просто: спросил у Claude, что чистить → взял один пункт → попросил починить, не трогая поведение → проверил → сохранил → следующий.

В этом ритме Claude Code — быстрый и глазастый напарник: он находит грязь, которую новичок проглядит, и убирает её аккуратно. Но решаешь, что важно, и держишь руку на тормозе — ты. Чистый код — это не разовый подвиг, а привычка убирать по чуть-чуть, пока не разрослось.

Если хочется освоить и терминал, и Git, и сам цикл «правка → проверка» с нуля и на практике — у нас есть бесплатный курс ровно про это, с тренажёром прямо в браузере.
