Встраивание переменной
Также известен как: 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;
}
Причины рефакторинга
Встраивание локальной переменной почти всегда используется как часть замены переменной вызовом метода или для облегчения извлечения метода.
Достоинства
- Сам по себе данный рефакторинг не несёт почти никакой пользы. Тем не менее, если переменной присваивается результат выполнения какого-то метода, у вас есть возможность немного улучшить читабельность программы, избавившись от лишней переменной.
Недостатки
- Иногда с виду бесполезные временные переменные служат для кеширования, то есть сохранения результата какой-то дорогостоящей операции, который будет в ходе работы использован несколько раз повторно. Перед тем как осуществлять рефакторинг, убедитесь, что в вашем случае это не так.
Порядок рефакторинга
-
Найдите все места, где используется переменная, и замените их выражением, которое ей присваивалось.
-
Удалите объявление переменной и строку присваивания ей значения.