Спрощення викликів методів

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

Перейменування методу

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

Рішення: Змініть назву методу.

Додавання параметра

Проблема: Методу не вистачає даних для здійснення якихось дій.

Рішення: Створіть новий параметр, щоб передати ці дані.

Видалення параметру

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

Рішення: Видаліть невживаний параметр.

Розділення запиту і модифікатора

Проблема: У вас є метод, який повертає якесь значення, але при цьому в процесі роботи він змінює щось усередині об'єкту.

Рішення: Розділіть метод на два різних методи. Один з них нехай повертає значення, а другий модифікує об'єкт.

Параметризація методу

Проблема: Декілька методів виконують схожі дії, які відрізняються тільки якимись внутрішніми значеннями, числами або операціями.

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

Заміна параметра набором спеціалізованих методів

Проблема: Метод було розбито на частини, кожна з яких виконується залежно від значення якогось параметра.

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

Передача усього об'єкту

Проблема: Ви отримуєте декілька значень від об'єкта, а потім передаєте їх в метод як параметри.

Рішення: Замість цього передавайте весь об'єкт.

Заміна параметра викликом методу

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

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

Заміна параметрів об'єктом

Проблема: У ваших методах зустрічається група параметрів, що повторюється.

Рішення: Замініть ці параметри об'єктом.

Видалення сеттера

Проблема: Значення поля має бути встановлене тільки в момент створення і більше ніколи не мінятися.

Рішення: Видаліть методи, що встановлюють значення цього поля.

Приховання методу

Проблема: Метод не використовується іншими класами або використовується тільки всередині своєї ієрархії класів.

Рішення: Зробіть метод приватним або захищеним.

Заміна конструктора фабричним методом

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

Рішення: Створіть фабричний метод і замініть ним виклики конструктора.

Заміна коду помилки виключенням

Проблема: Метод повертає певне значення, яке сигналізуватиме про помилку.

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

Заміна виключення перевіркою умови

Проблема: Ви викидаєте виключення там, де можна було б обійтися простою перевіркою умови.

Рішення: Замініть викидання виключення перевіркою цієї умови.

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

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

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

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