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

49 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#рефакторинг #методы_рефакторинга
![[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]]