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