Використовуйте цей шаблон для документування та відстеження вашого рефакторингу.


Інформація про проєкт

Поле Значення
Проєкт/Модуль [Назва проєкту]
Цільові файли [Список файлів для рефакторингу]
Дата створення [Дата]
Автор [Імʼя]
Статус Чернетка / На перегляді / Затверджено / В роботі / Завершено

Загальний опис

Цілі

Обмеження

Рівень ризику


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

Оцінка покриття тестами

Метрика Поточне Ціль Статус
Покриття юніт-тестами __% ≥80%
Інтеграційні тести Так/Ні Так
Усі тести проходять Так/Ні Так

Потрібно перед початком


Виявлені запахи коду

Резюме

# Запах Розташування Серйозність Пріоритет
1 [напр., Long Method] [файл:рядок] Високий P1
2 [напр., Duplicate Code] [файл:рядок] Середній P2
3 [напр., Feature Envy] [файл:рядок] Низький P3

Детальний аналіз

Запах #1: [Назва]

Розташування: path/to/file.js:45-120

Опис: [Детальний опис проблеми]

Вплив:

Запропоноване рішення: [Короткий огляд виправлення]


Фази рефакторингу

Фаза A: Швидкі перемоги (Низький ризик)

Ціль: Прості покращення з негайною цінністю

Орієнтовні зміни: [X файлів, Y методів]

Потрібне затвердження користувача: Так / Ні

# Завдання Файл Рефакторинг Статус
A1 Перейменувати змінну x на userCount utils.js:15 Rename Variable [ ]
A2 Видалити невикористаний oldHandler() api.js:89 Remove Dead Code [ ]
A3 Витягти дубльовану валідацію form.js:23,67 Extract Method [ ]

План відкату: Відкатити коміти A1-A3


Фаза B: Структурні покращення (Середній ризик)

Ціль: Покращити організацію та ясність коду

Орієнтовні зміни: [X файлів, Y методів]

Потрібне затвердження користувача: Так

Залежності: Фаза A має бути завершена

# Завдання Файл Рефакторинг Статус
B1 Витягти calculatePrice() з довгого методу order.js:45 Extract Method [ ]
B2 Ввести обʼєкт параметрів OrderDetails order.js:12 Introduce Parameter Object [ ]
B3 Перемістити formatAddress() до класу Address customer.js:78 Move Method [ ]

План відкату: Відкатити до коміту після Фази A


Фаза C: Архітектурні зміни (Вищий ризик)

Ціль: Усунути глибші структурні проблеми

Орієнтовні зміни: [X файлів, Y методів]

Потрібне затвердження користувача: Так

Залежності: Фази A та B мають бути завершені

# Завдання Файл Рефакторинг Статус
C1 Замінити switch цін на поліморфізм pricing.js:30 Replace Conditional with Polymorphism [ ]
C2 Витягти клас NotificationService user.js:100 Extract Class [ ]

План відкату: Відкатити до коміту після Фази B


Детальні кроки рефакторингу

Завдання [ID]: [Назва завдання]

Усунений запах: [Назва запаху]

Техніка рефакторингу: [Назва техніки]

Рівень ризику: Низький / Середній / Високий

Контекст

До (Поточний стан):

// Вставте поточний код тут

Після (Очікуваний стан):

// Вставте очікуваний код тут

Покрокова механіка

  1. Крок 1: [Опис]

    • Тест: Запустити тести після цього кроку
    • Очікувано: Усі тести проходять
  2. Крок 2: [Опис]

    • Тест: Запустити тести після цього кроку
    • Очікувано: Усі тести проходять
  3. Крок 3: [Опис]

    • Тест: Запустити тести після цього кроку
    • Очікувано: Усі тести проходять

Верифікація

Повідомлення коміту

refactor: [Опишіть рефакторинг]

Відстеження прогресу

Статус фаз

Фаза Статус Розпочато Завершено Тести проходять
A Не розпочато / В роботі / Готово
B Не розпочато / В роботі / Готово
C Не розпочато / В роботі / Готово

Виявлені проблеми

# Проблема Рішення Статус
1 [Опис] [Як вирішено] Відкрито / Вирішено

Порівняння метрик

До рефакторингу

Метрика Файл 1 Файл 2 Загалом
Рядків коду
Цикломатична складність
Індекс супровідності
Кількість методів
Середня довжина методу

Після рефакторингу

Метрика Файл 1 Файл 2 Загалом Зміна
Рядків коду
Цикломатична складність
Індекс супровідності
Кількість методів
Середня довжина методу

Контрольний список після рефакторингу


Отримані уроки

Що пройшло добре

Що можна покращити

Рекомендації на майбутнє


Затвердження

Роль Імʼя Дата Підпис
Автор плану
Технічний лід
Власник продукту

Додатки

A. Повʼязана документація

B. Довідкові матеріали

C. Використані інструменти