JavaScript:
Рефакторинг

Як це зробити:

Давайте подивимося на простий приклад, де рефакторинг може зробити ваш код більш лаконічним і читабельним. Тут ми рефакторимо функцію, яка розраховує суму масиву чисел.

До:

function calculateSum(arr) {
  let sum = 0;
  for (let i = 0; i < arr.length; i++) {
    sum += arr[i];
  }
  return sum;
}

console.log(calculateSum([1, 2, 3, 4])); // Вивід: 10

Після:

function calculateSum(arr) {
  return arr.reduce((sum, num) => sum + num, 0);
}

console.log(calculateSum([1, 2, 3, 4])); // Вивід: 10

Бачите, як метод reduce зменшує розмір функції, зберігаючи при цьому її функціональність? Ось це і є рефакторинг.

Поглиблений аналіз

Рефакторинг не став формальною практикою до публікації книги Мартіна Фаулера “Рефакторинг: Покращення дизайну існуючого коду” у 1999 році. Ця книга разом з ростом популярності гнучкої розробки програмного забезпечення допомогла вивести рефакторинг на головний потік.

Описувати рефакторинг як аспект розробки програмного забезпечення можна порівняти з поясненням, чому ви прибиратимете у майстерні: ви робите це, щоб наступного разу, коли вам потрібно буде щось виправити (у цьому випадку, код), ви витратили б менше часу на боротьбу з безладом і більше на справжню проблему.

Коли ми говоримо про альтернативи рефакторингу, ми занурюємося в ширше обговорення стратегій обслуговування програмного забезпечення. Наприклад, можна вибрати повний перепис коду, але це часто дорожче і ризикованіше. Рефакторинг поступово дозволяє отримувати постійні переваги, не потопаючи корабель через раптовий капітальний ремонт.

Рефакторинг був підтриманий розвитком інтегрованих середовищ розробки (IDE) та інструментів, таких як JSHint, ESLint і Prettier у екосистемі JavaScript, які автоматизують перевірки якості коду та виділяють можливості для рефакторингу.

Це все про чистий, виразний та обслуговуваний код. Складні алгоритми, оптимізації структур даних або навіть архітектурні зміни, наприклад, перехід від процедурного до функціонального стилю програмування, можуть бути частиною процесу рефакторингу.

Рефакторинг потрібно виконувати обережно; важливо мати надійний набір тестів, щоб переконатися, що ваші зміни не змінили поведінку програмного забезпечення несподівано — ще одна причина, чому Test-Driven Development (TDD) гармонійно поєднується з рефакторингом, оскільки він по замовчуванню забезпечує цю безпеку.

Дивіться також