Також відомий як Preserve Whole Object

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

Проблема

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

Рішення

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

До
int low = daysTempRange.getLow();
int high = daysTempRange.getHigh();
boolean withinPlan = plan.withinRange(low, high);
Після
boolean withinPlan = plan.withinRange(daysTempRange);
До
int low = daysTempRange.GetLow();
int high = daysTempRange.GetHigh();
bool withinPlan = plan.WithinRange(low, high);
Після
bool withinPlan = plan.WithinRange(daysTempRange);
До
$low = $daysTempRange->getLow();
$high = $daysTempRange->getHigh();
$withinPlan = $plan->withinRange($low, $high);
Після
$withinPlan = $plan->withinRange($daysTempRange);
До
low = daysTempRange.getLow()
high = daysTempRange.getHigh()
withinPlan = plan.withinRange(low, high)
Після
withinPlan = plan.withinRange(daysTempRange)

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

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

Замість цього код отримання усіх потрібних даних може зберігатися одному місці — в самому методі.

Переваги

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

  • Якщо методу знадобляться ще якісь дані з об'єкту, не треба буде переписувати усі місця, де викликається цей метод, а тільки нутрощі самого методу.

Недоліки

  • В деяких випадках після такого перетворення метод втрачає в універсальності, оскільки він міг отримувати дані з безлічі різних джерел, а в результаті рефакторингу ми обмежуємо круг його застосування тільки для об'єктів з певним інтерфейсом.

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

  1. Створіть параметр в методі для об'єкту, з якого можна отримати потрібні значення.

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

  3. Видаліть код отримання значень з об'єкту-параметра, який стояв перед викликом методу.

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

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

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

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