40 lines
2.8 KiB
Markdown
40 lines
2.8 KiB
Markdown
#рефакторинг #методы_рефакторинга
|
||
|
||
![[Pasted image 20241115073144.png]]
|
||
|
||
### **Проблема**
|
||
У вас есть временная переменная, которой присваивается результат простого выражения (и больше ничего)
|
||
```typescript
|
||
hasDiscount(order: Order): boolean {
|
||
let basePrice: number = order.basePrice();
|
||
return basePrice > 1000;
|
||
}
|
||
```
|
||
|
||
### **Решение**
|
||
Замените обращения к переменной этим выражением.
|
||
```typescript
|
||
hasDiscount(order: Order): boolean {
|
||
return order.basePrice() > 1000;
|
||
}
|
||
```
|
||
|
||
### **Причины рефакторинга**
|
||
Переменные предоставляют имена для выражений внутри функции, и поэто му они обычно являются Полезными Вещами. Но иногда в действительности имя не говорит больше, чем само выражение. В других случаях вы можете обнару жить, что переменная мешает рефакторингу соседнего кода. В этих случаях может быть полезно встроить переменную.
|
||
|
||
### **Достоинства**
|
||
- Если переменной присваивается результат выполнения какого-то метода, у вас есть возможность немного улучшить читабельность программы, избавившись от лишней переменной
|
||
|
||
### **Недостатки**
|
||
- Иногда с виду бесполезные временные переменные служат для кеширования, то есть сохранения результата какой-то дорогостоящей операции, который будет в ходе работы использован несколько раз повторно. Перед тем как осуществлять рефакторинг, убедитесь, что в вашем случае это не так
|
||
|
||
### **Порядок рефакторинга**
|
||
1. Найдите все места, где используется переменная, и замените их выражением, которое ей присваивалось
|
||
2. Удалите объявление переменной и строку присваивания ей значения
|
||
|
||
### **Обратный рефакторинг**
|
||
- [[Извлечение переменной (Extract Variable)]]
|
||
|
||
### **Ссылки**
|
||
- https://refactoring.guru/ru/inline-temp
|
||
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]] |