Складання методів

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

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

Відокремлення методу

Проблема: У вас є фрагмент коду, який можна згрупувати.

Рішення: Виділіть цей фрагмент в новий метод (чи функцію) і викличте його замість старого коду.

Вбудовування методу

Проблема: Варто використовувати у випадках, коли тіло методу очевидніше за сам метод.

Рішення: Замініть виклики методу його вмістом і видаліть сам метод.

Відокремлення змінної

Проблема: У вас є складний для розуміння вираз.

Рішення: Помістіть результат виразу або його частини в окремі змінні, що пояснюють суть виразу.

Вбудовування змінної

Проблема: У вас є локальна змінна, якій привласнюється результат простого виразу (і більше нічого).

Рішення: Замініть звернення до змінної цим виразом.

Заміна змінної викликом методу

Проблема: Ви розміщуєте результат якогось виразу в локальній змінній, щоб використати її далі в коді.

Рішення: Виділіть цей вираз в окремий метод і повертайте результат з нього. Замініть використання вашої змінної викликом методу. Новий метод може бути використаний і в інших методах.

Розщеплювання змінної

Проблема: У вас є локальна змінна, яка використовується для зберігання різноманітних значень всередині методу (не рахуючи змінних циклів).

Рішення: Використайте різні змінні для різних значень. Кожна змінна повинна відповідати тільки за одну певну річ.

Видалення привласнень параметрам

Проблема: Параметру метода привласнюється якесь значення.

Рішення: Замість параметра скористайтеся новою локальною змінною.

Заміна методу об'єктом методів

Проблема: У вас є довгий метод, в якому локальні змінні так сильно переплетені, що це робить неможливим застосування «відокремлення методу» (Extract method).

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

Заміна алгоритму

Проблема: Ви хочете замінити існуючий алгоритм іншим?

Рішення: Замініть тіло методу, що реалізує старий алгоритм, новим алгоритмом.

Замучились читати?

Збігайте за подушкою, в нас тут контенту приблизно на 7 годин читання.

Або спробуйте наш новий інтерактивний курс з рефакторингу. Він більш інформативний та набагато цікавіший за банальний тест.

Дізнатися більше...