Також відомий як Introduce Parameter Object

Рефакторинг Заміна параметрів об'єктом

Проблема

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

Рішення

Замініть ці параметри об'єктом.
До
Introduce Parameter Object - Before
Після
Introduce Parameter Object - After

Причини рефакторингу

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

Переваги

  • Покращує читабельність коду. Замість пачки різноманітних параметрів ви бачите один об'єкт із зрозумілою назвою.

  • Однакові групи параметрів тут і там створюють особливий рід дублювання коду, при якому начебто не відбувається виклику ідентичного коду, але весь час зустрічаються однакові групи параметрів і аргументів.

Недоліки

  • Якщо ви перемістили в новий клас лише дані і не плануєте переміщати в нього ніяких операцій над цими даними — це може тхнути «класами даних» (Data class).

Порядок рефакторингу

  1. Створіть новий клас, який представлятиме вашу групу параметрів. Зробіть так, щоб дані об'єктів цього класу не можна було змінити після створення (make classes immutable).

  2. В метод, до якого застосовується рефакторинг, «додайте новий параметр» (Add parameter), у якому передаватиметься ваш об'єкт-параметр. В усіх викликах методу передавайте в цей параметр об'єкт, що створюється із старих параметрів методу.

  3. Тепер починайте по одному видаляти старі параметри з методу, замінюючи їх в коді полями об'єкту-параметра. Тестуйте програму після кожної заміни параметра.

  4. По закінченню оцініть, чи є можливість і сенс перенести якусь частину методу (а іноді і весь метод) в клас об'єкту-параметра. Якщо так, використайте переміщення методу або відокремлення методу, щоб здійснити перенесення.

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

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

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

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

Живий приклад

Перший раз у нас? Нічого страшного!

У нас тут все просто – цей інтерактивний приклад дуже схожий на відео (хоча й виглядає набагато крутіше).

  1. Натискаєте велику кнопку "Почати", а далі слідуєте усім підказкам.
  2. Ви можете перемотувати програвання, використовуючи стрілки зліва.
  3. Окрім того, ви можете подивитися різницю між стартовим та отриманим кодом, натиснувши кнопку ока ().
  4. Кнопка компіляції та тестування () дає змогу перевірити код на наявність помилок.