ODMA
Целостный рефакторинг
Сначала определяем ответственность
Перед существенным рефакторингом определяем владельца, потребителей, зависимости, контракты и тесты. Формулируем решение явно: ответственность X принадлежит Y, поэтому её контракт находится в Z.
Предпочитаем решение внутри установленной архитектуры. Если модель содержит конкретное противоречие, объясняем его и отдельно предлагаем архитектурное изменение. Граница не должна незаметно измениться побочным эффектом задачи.
Сохраняем комментарии, стабильные идентификаторы и поведение. Генерируемый результат меняем через источник и генератор. Diff должен быть целостным, без посторонних переименований, форматирования и уборки.