Встраивание метода.
Problem
Стоит использовать в том случае, когда тело метода очевиднее самого метода.
Solution
Замените вызовы метода его содержимым и удалите сам метод.
##Example
Before
class PizzaDelivery {
// ...
int getRating() {
return moreThanFiveLateDeliveries() ? 2 : 1;
}
boolean moreThanFiveLateDeliveries() {
return numberOfLateDeliveries > 5;
}
}After
class PizzaDelivery {
// ...
int getRating() {
return numberOfLateDeliveries > 5 ? 2 : 1;
}
}##Why Refactor
Основаная причина — тело метода состоит из простого делегирования к другому методу. Само по себе такое делегирование — не проблема. Но если таких методов довольно много, становится очень легко в них запутаться.
Зачастую методы не бывают слишком короткими изначально, а становятся такими в результате изменений в программе. Поэтому не стоит бояться избавляться от ставших ненужными методов.
##Benefits
- Минимизируя количество бесполезных методов, мы уменьшаем общую сложность кода.
##How to Refactor
-
Убедитесь, что метод не переопределяется в подклассах. Если он переопределяется, воздержитесь от рефакторинга.
-
Найдите все вызовы метода. Замените эти вызовы содержимым метода.
-
Удалите метод.