Skip to content
PПромтбук
RUEN
04Рефакторинг

Выделение модуля из большого файла

Найти зону ответственности, вынести в отдельный модуль с чётким API.

Файл вырос: {{file}}. Помоги выделить из него модуль.

Шаги

1. Анализ ответственности

Прочитай файл и составь список того что он делает. Сгруппируй:

Группа A: ...
  - Функция/класс 1
  - Функция/класс 2

Группа B: ...
  - ...

Группа C: ...
  - ...

Если групп больше двух — у файла нарушен single responsibility. Хороший кандидат на выделение — самая независимая группа.

2. Определение границы

Для выделяемого модуля:

  • Имя (короткое, описывает роль)
  • Публичный API (минимальный — что снаружи видно)
  • Зависимости (что нужно внутри, что приходит снаружи)
  • Что становится приватным

3. Подготовка

  • Запусти тесты — должны быть зелёные
  • Если тестов на эту часть нет — напиши characterization tests
  • Сделай коммит "WIP: before module extraction" — safety net

4. Извлечение

  1. Создай новый файл с пустым модулем
  2. Перенеси функции/классы по одной:
    • Перенёс → исправил импорты → тесты прогнал
    • Зелёное → коммит
    • Не пытайся всё за раз
  3. Сделай API явным:
    • Что экспортируешь — продумай
    • Не экспортируй "вдруг пригодится"
    • Минимальный публичный API
  4. Замени прямые обращения в старом файле на импорт

5. После

  • Файлы меньше / понятнее
  • Тесты проходят
  • Импорты чистые
  • Нет циклических зависимостей
  • Можешь объяснить что делает новый модуль одним предложением

Признаки удачного выделения

  • Можешь объяснить модуль за 10 секунд
  • Можешь использовать в другом проекте без модификаций
  • Тесты модуля — самодостаточны (не требуют моков соседних модулей)

Признаки неудачного выделения

  • Новый модуль импортит много чего из старого
  • Старому файлу всё ещё нужны внутренности нового
  • API получился из 15+ функций
  • Нужно сделать "ещё один файл-утилит"

В последнем случае — откатывайся, ищи другую границу.

К подразделу «Рефакторинг»
Похожие промты