📜 NOM-112. Refactoring Catastrophe Protocol (RCP)
Стандарт благих намерений во имя процесса рефакторинга
📑 Паспорт стандарта
| Параметр | Значение |
|---|---|
| Код | NOM-112 |
| Название | Refactoring Catastrophe Protocol (RCP) |
| Статус | Действующий |
| Дата выпуска | 2025-11-09 |
| Версия | v1.0 |
| Краткое описание | Стандарт оценки, предупреждения и документирования рефакторинга: от невинного «чуть-чуть поправлю» до системного коллапса. |
Термины и определения
| Термин | Определение |
|---|---|
| Рефакторинг | Процесс устранения боли, эстетических страданий и случайных импортов. Начинается как страсть. Заканчивается откатом. |
| Катастрофа | Необратимое состояние системы, вызванное благими намерениями. |
| Объём трагедии (T) | Количественная мера последствий: баги, хотфиксы, сопли QA. |
| Интенсивность намерений (I) | Насколько сильно разработчик верил, что делает мир лучше. |
| Глубина вмешательства (D) | Насколько глубоко вошли руки. |
Модель RCP
Рефакторинг оценивается по трём критериям:
| Критерий | Описание |
|---|---|
| I — Intention | Степень «я хотел как лучше». Чем выше I, тем хуже всё кончится. |
| D — Depth | Глубина трогания кода: от переименования переменной до «я улучшил архитектуру». |
| T — Tragedy | Фактический объём разрушений: баги, падения, отвалы, выгорание. |
Каждый критерий оценивается от 0 до 1.
Формула Catastrophe Score
RCP_Score = (I × D) + T
Интерпретация:
- если I высокое — всё будет плохо
- если D глубокое — всё будет плохо
- если T уже случилась — всё уже плохо
Уровни катастрофы
| RCP_Score | Уровень | Вердикт |
|---|---|---|
| 0.0–0.3 | «Рефакторинг косметический» | жить можно, прод почти не заметил |
| 0.3–0.6 | «Рефакторинг с последствиями» | разработчик устал, QA скулит, продукт под угрозой |
| 0.6–0.8 | «Рефакторинг трагический» | сорваны сроки, баги плодятся, менеджеры вьются кругами |
| 0.8–1.0 | «Архитектурный Армагеддон» | откат, поезд из хотфиксов, годовая травма команды |
Процедура проведения RCP
- Инициация Фраза-триггер:
«Там чуть-чуть кривовато, сейчас поправлю».
-
Оценка намерений (I) Чем более вдохновлён разработчик - тем выше риск.
-
Определение глубины (D)
- 0.1 — «переименовал переменную»
- 0.5 — «разделил слой на три»
- 1.0 — «полностью переписал сервис»
- Сбор трагедии (T) Считаются:
- новые баги
- сломанные тесты
- увеличившийся time-to-delivery
- эмоциональный ущерб команды
-
Расчёт RCP_Score
-
Принятие решения:
- продолжить
- остановить
- выжечь всё огнём и откатить
Симптомы надвигающейся катастрофы
- «Кажется, так будет лучше».
- «Почему оно вообще работало до меня?»
- «Я вдруг понял, что тут надо всё переписать».
- «Ребят, не тестите пока, я скоро закончу».
- «Я хотел как лучше».
- «Делаем ревью по частям, там много».
- «Прошу не смотреть diff».
- «GitHub что-то не показывает количество изменённых файлов».
Если услышали хотя бы два симптома — катастрофа уже идёт.
Уровни зрелости RCP
| Уровень | Название | Характеристика |
|---|---|---|
| RCP-L1 | «Наивный герой» | Рефакторинг делается на эмоциях. |
| RCP-L2 | «Осознанный суицид» | Разработчик понимает риски, но всё равно идёт. |
| RCP-L3 | «QA монах» | Тесты ломаются, но никто не шевелится. |
| RCP-L4 | «Архитектор-спасатель» | Команда начинает писать документацию до рефакторинга. |
| RCP-L5 | «Просветленный DevSecOps» | Рефакторинг планируется, мониторится, проживается без трагедий. |
Взаимосвязь со стандартами
🔗 Связь с NOM-101 (STM)
STM отвечает на вопрос «Съедобно ли?».
RCP — «А не убьём ли мы никого, если попытаемся сделать лучше?».
🔗 Связь с NOM-203 (SRAP)
SRAP оценивает токсичность продукта.
RCP — токсичность процесса.
🔗 Связь с NOM-301 (ISEF)
ISEF анализирует продукт.
RCP — разработчика.
9. Заключение
Рефакторинг — это путь героя. Но иногда — путь героя к катастрофе.