# Шаблон плану рефакторингу Використовуйте цей шаблон для документування та відстеження вашого рефакторингу. --- ## Інформація про проєкт | Поле | Значення | |------|----------| | **Проєкт/Модуль** | [Назва проєкту] | | **Цільові файли** | [Список файлів для рефакторингу] | | **Дата створення** | [Дата] | | **Автор** | [Імʼя] | | **Статус** | Чернетка / На перегляді / Затверджено / В роботі / Завершено | --- ## Загальний опис ### Цілі - [ ] [Основна ціль: напр., Покращити читабельність обробки платежів] - [ ] [Другорядна ціль: напр., Зменшити дублювання коду] - [ ] [Третинна ціль: напр., Покращити тестовність] ### Обмеження - [ ] [Обмеження 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` на `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]: [Назва завдання] **Усунений запах**: [Назва запаху] **Техніка рефакторингу**: [Назва техніки] **Рівень ризику**: Низький / Середній / Високий #### Контекст **До** (Поточний стан): ```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. Використані інструменти - [Тестовий фреймворк] - [Інструменти лінтингу] - [Інструменти аналізу складності]