Замена переменной вызовом метода.
Вы помещаете результат какого-то выражения в локальную переменную, чтобы использовать её далее в коде.
Выделите все выражение в отдельный метод и возвращайте результат из него. Замените использование вашей переменной вызовом метода. Новый метод может быть использован и в других методах.
##Example
double calculateTotal() {
double basePrice = quantity * itemPrice;
if (basePrice > 1000) {
return basePrice * 0.95;
}
else {
return basePrice * 0.98;
}
}double calculateTotal() {
if (basePrice() > 1000) {
return basePrice() * 0.95;
}
else {
return basePrice() * 0.98;
}
}
double basePrice() {
return quantity * itemPrice;
}##Why Refactor
Применение данного рефакторинга может быть подготовительным этапом для применения выделения метода для какой-то части очень длинного метода.
Кроме того, иногда можно найти это же выражение и в других методах, что заставляет задуматься о создании общего метода для его получения.
##Benefits
-
Улучшает читабельность кода. Намного проще понять, что делает метод
getTax()чем строкаorderPrice() * -2. -
Помогает убрать дублирование кода, если заменяемая строка используется более чем в одном методе.
##How to Refactor
-
Убедитесь, что переменной в пределах метода присваивается значение только один раз. Если это не так, используйте расщепление переменной для того, чтобы гарантировать, что переменная будет использована только для хранения результата вашего выражения.
-
Используйте извлечение метода для того, чтобы переместить интересующее вас выражение в новый метод. Убедитесь, что этот метод только возвращает значение и не меняет состояние объекта. Если он как-то влияет на видимое состояние объекта, используйте разделение запроса и модификатора.
-
Замените использование переменной вызовом вашего нового метода.