#рефакторинг #методы_рефакторинга ![[Pasted image 20241115070602.png]] ### **Проблема** Стоит использовать в том случае, когда тело метода очевиднее самого метода ```typescript class PizzaDelivery { // ... getRating(): number { return moreThanFiveLateDeliveries() ? 2 : 1; } moreThanFiveLateDeliveries(): boolean { return numberOfLateDeliveries > 5; } } ``` ### **Решение** Замените вызовы метода его содержимым и удалите сам метод ```typescript class PizzaDelivery { // ... getRating(): number { return numberOfLateDeliveries > 5 ? 2 : 1; } } ``` ### **Причины рефакторинга** Иногда встречаются функции, тела которых так же очевидны, как и названия, — либо изначально, либо после рефакторинга. В этом случае можно избавиться от функции. Косвенность может быть полезной, но излишняя косвенность мешает. ### **Достоинства** - Минимизируя количество бесполезных методов, мы уменьшаем общую сложность кода ### **Порядок рефакторинга** 1. Убедитесь, что метод не переопределяется в подклассах. Если он переопределяется, воздержитесь от рефакторинга 2. Найдите все вызовы метода. Замените эти вызовы содержимым метода 3. Удалите метод ### **Борется с запахом** - [[Теоретическая общность]] ### **Обратный рефакторинг** - [[Извлечение функции (Extract Function)]] ### **Ссылки** - https://refactoring.guru/ru/inline-method - [[Мартин Фаулер - Рефакторинг кода на JavaScript]]