Вбудовування змінної
Також відомий як: Inline Temp
Проблема
У вас є локальна змінна, якій присвоюється результат простого виразу (і більше нічого).
Рішення
Замініть звернення до змінної цим виразом.
До
boolean hasDiscount(Order order) {
double basePrice = order.basePrice();
return basePrice > 1000;
}
Після
boolean hasDiscount(Order order) {
return order.basePrice() > 1000;
}
До
bool HasDiscount(Order order)
{
double basePrice = order.BasePrice();
return basePrice > 1000;
}
Після
bool HasDiscount(Order order)
{
return order.BasePrice() > 1000;
}
До
$basePrice = $anOrder->basePrice();
return $basePrice > 1000;
Після
return $anOrder->basePrice() > 1000;
До
def hasDiscount(order):
basePrice = order.basePrice()
return basePrice > 1000
Після
def hasDiscount(order):
return order.basePrice() > 1000
До
hasDiscount(order: Order): boolean {
let basePrice: number = order.basePrice();
return basePrice > 1000;
}
Після
hasDiscount(order: Order): boolean {
return order.basePrice() > 1000;
}
Причини рефакторингу
Вбудовування локальної змінної майже завжди використовують як частину заміни змінної викликом методу або для полегшення відокремлення методу.
Переваги
- Сам по собі цей рефакторинг не несе майже ніякої користі. Проте, якщо змінній присвоюється результат виконання якогось методу, у вас є можливість трохи поліпшити читабельність програми, позбавившись від зайвої змінної.
Недоліки
- Іноді, на перший погляд даремні тимчасові змінні потрібні для кешування, тобто збереження результату якоїсь дорогої операції, що буде використаний в ході роботи кілька разів повторно. Перед тим, як здійснитити рефакторинг, переконаєтеся, що у вашому випадку це не так.
Порядок рефакторингу
-
Знайдіть усі місця, де використовується змінна, і замініть цю змінну виразом, який їй присвоювався.
-
Видаліть оголошення змінної і рядок присвоєння їй значення.