Base/Knowledges/IT/Рефакторинг/Методы рефакторинга/Встраивание функции (Inline Function).md
2026-02-23 19:52:05 +03:00

2.1 KiB
Raw Permalink Blame History

#рефакторинг #методы_рефакторинга

!Pasted image 20241115070602.png

Проблема

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

class PizzaDelivery {
  // ...
  getRating(): number {
    return moreThanFiveLateDeliveries() ? 2 : 1;
  }
  moreThanFiveLateDeliveries(): boolean {
    return numberOfLateDeliveries > 5;
  }
}

Решение

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

class PizzaDelivery {
  // ...
  getRating(): number {
    return numberOfLateDeliveries > 5 ? 2 : 1;
  }
}

Причины рефакторинга

Иногда встречаются функции, тела которых так же очевидны, как и названия, — либо изначально, либо после рефакторинга. В этом случае можно избавиться от функции. Косвенность может быть полезной, но излишняя косвенность мешает.

Достоинства

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

Порядок рефакторинга

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

Борется с запахом

Обратный рефакторинг

Ссылки