Логотип ConstructiCat
CodeBust.
Навигация по разделу ▾

Встраивание метода.

Проблема

Стоит использовать в том случае, когда тело метода очевиднее самого метода.

Решение

Замените вызовы метода его содержимым и удалите сам метод.

##Пример

До
class PizzaDelivery {
  // ...
  int getRating() {
    return moreThanFiveLateDeliveries() ? 2 : 1;
  }
  boolean moreThanFiveLateDeliveries() {
    return numberOfLateDeliveries > 5;
  }
}
После
class PizzaDelivery {
  // ...
  int getRating() {
    return numberOfLateDeliveries > 5 ? 2 : 1;
  }
}

##Зачем делать рефакторинг

Основаная причина — тело метода состоит из простого делегирования к другому методу. Само по себе такое делегирование — не проблема. Но если таких методов довольно много, становится очень легко в них запутаться.

Зачастую методы не бывают слишком короткими изначально, а становятся такими в результате изменений в программе. Поэтому не стоит бояться избавляться от ставших ненужными методов.

##Преимущества

  • Минимизируя количество бесполезных методов, мы уменьшаем общую сложность кода.

##Как делать рефакторинг

  1. Убедитесь, что метод не переопределяется в подклассах. Если он переопределяется, воздержитесь от рефакторинга.

  2. Найдите все вызовы метода. Замените эти вызовы содержимым метода.

  3. Удалите метод.