Встраивание метода
Также известен как: Inline Method
Проблема
Стоит использовать в том случае, когда тело метода очевиднее самого метода.
Решение
Замените вызовы метода его содержимым и удалите сам метод.
До
class PizzaDelivery {
// ...
int getRating() {
return moreThanFiveLateDeliveries() ? 2 : 1;
}
boolean moreThanFiveLateDeliveries() {
return numberOfLateDeliveries > 5;
}
}
После
class PizzaDelivery {
// ...
int getRating() {
return numberOfLateDeliveries > 5 ? 2 : 1;
}
}
Причины рефакторинга
Основаная причина — тело метода состоит из простого делегирования к другому методу. Само по себе такое делегирование — не проблема. Но если таких методов довольно много, становится очень легко в них запутаться.
Зачастую методы не бывают слишком короткими изначально, а становятся такими в результате изменений в программе. Поэтому не стоит бояться избавляться от ставших ненужными методов.
Достоинства
- Минимизируя количество бесполезных методов, мы уменьшаем общую сложность кода.
Порядок рефакторинга
-
Убедитесь, что метод не переопределяется в подклассах. Если он переопределяется, воздержитесь от рефакторинга.
-
Найдите все вызовы метода. Замените эти вызовы содержимым метода.
-
Удалите метод.