Спрощення викликів методів
Ці рефакторинги роблять виклики методів простіше і ясніше для розуміння. Це, в свою чергу, спрощує інтерфейси взаємодії між класами.
Проблема: Назва методу не розкриває суть того, що він робить.
Рішення: Змініть назву методу.
Проблема: Методу не вистачає даних для здійснення якихось дій.
Рішення: Створіть новий параметр, щоби передати ці дані.
Проблема: Параметр не використовується в тілі методу.
Рішення: Видаліть невживаний параметр.
Проблема: У вас є метод, який повертає якесь значення, але при цьому в процесі роботи він змінює щось всередині об’єкта.
Рішення: Розділіть метод на два різних методи. Один з них нехай повертає значення, а другий модифікує об’єкт.
Проблема: Декілька методів виконують схожі дії, які відрізняються тільки якимись внутрішніми значеннями, числами або операціями.
Рішення: Об’єднайте усі ці методи в один з параметром, в який передаватиметься значення, що відрізняється.
Проблема: Метод було розбито на частини, кожна з яких виконується залежно від значення якогось параметра.
Рішення: Витягніть окремі частини методу у власні методи і викликайте їх замість оригінального методу.
Проблема: Ви отримуєте декілька значень від об’єкта, а потім передаєте їх в метод як параметри.
Рішення: Замість цього передавайте весь об’єкт.
Проблема: Викликаємо метод і передаємо його результати в параметри іншого методу. При цьому значення параметрів могли б бути отримані і всередині викликаного методу.
Рішення: Замість передачі значення через аргументи, спробуйте перемістити код отримання значення всередину самого методу.
Проблема: У ваших методах зустрічається група параметрів, що повторюється.
Рішення: Замініть ці параметри об’єктом.
Проблема: Значення поля має бути встановлене тільки в момент створення і більше ніколи не мінятися.
Рішення: Видаліть методи, що встановлюють значення цього поля.
Проблема: Метод не використовується іншими класами або використовується тільки всередині своєї ієрархії класів.
Рішення: Зробіть метод приватним або захищеним.
Проблема: У вас є складний конструктор, що робить щось більше, ніж просте встановлення значень для полів об’єкта.
Рішення: Створіть фабричний метод і замініть ним виклики конструктора.
Проблема: Метод повертає певне значення, яке сигналізуватиме про помилку.
Рішення: Замість цього слід викидати виключення.
Проблема: Ви викидаєте виключення там, де можна було б обійтися простою перевіркою умови.
Рішення: Замініть викидання виключення перевіркою цієї умови.