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

40 lines
2.8 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 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]]