Skip to content

Шаблон плану рефакторингу ​

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


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

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

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

Цілі ​

  • [Основна ціль: напр., Покращити читабельність обробки платежів]
  • [Другорядна ціль: напр., Зменшити дублювання коду]
  • [Третинна ціль: напр., Покращити тестовність]

Обмеження ​

  • [Обмеження 1: напр., Не можна змінювати публічний API]
  • [Обмеження 2: напр., Зберегти зворотну сумісність]
  • [Обмеження 3: напр., Без змін схеми БД]

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

  • Низький — незначні зміни, добре протестований код
  • Середній — помірні зміни, деякий ризик
  • Високий — значні зміни, потрібна ретельна увага

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

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

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

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

  • Усі тести проходять
  • Код переглянутий та зрозумілий
  • Резервне копіювання/контроль версій налаштовано
  • Затвердження користувача отримано

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

Резюме ​

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

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

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

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

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

Вплив:

  • [Вплив 1]
  • [Вплив 2]

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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

Контекст ​

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

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

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

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

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

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

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

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

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

Верифікація ​

  • Усі тести проходять
  • Поведінка не змінилася
  • Код компілюється
  • Немає нових попереджень

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

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

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

Статус фаз ​

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

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

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

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

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

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

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

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

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

  • Усі тести проходять
  • Немає нових попереджень або помилок
  • Код успішно компілюється
  • Ручна верифікація завершена
  • Документація оновлена (за потреби)
  • Код переглянутий
  • Метрики покращені
  • Підпис користувача отриманий

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

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

  • [Пункт 1]
  • [Пункт 2]

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

  • [Пункт 1]
  • [Пункт 2]

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

  • [Пункт 1]
  • [Пункт 2]

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

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

Додатки ​

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

  • [Посилання на релевантні документи]

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

  • [Посилання на каталог запахів коду]
  • [Посилання на каталог рефакторингів]

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

  • [Тестовий фреймворк]
  • [Інструменти лінтингу]
  • [Інструменти аналізу складності]