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. Використані інструменти

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