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