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

42 lines
3.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 20250204082823.png]]
### **Проблема**
У вас есть локальная переменная, которая используется для хранения разных промежуточных значений внутри метода (за исключением переменных циклов).
```typescript
let temp = 2 * (height + width);
console.log(temp);
temp = height * width;
console.log(temp);
```
### **Решение**
Используйте разные переменные для разных значений. Каждая переменная должна отвечать только за одну определённую вещь.
```typescript
const perimeter = 2 * (height + width);
console.log(perimeter);
const area = height * width;
console.log(area);
```
### **Причины рефакторинга**
Если вы «экономите» переменные внутри функции, повторно используете их для различных несвязанных целей, у вас обязательно начнутся проблемы в тот момент, когда потребуется внести какие-то изменения в код, содержащий эти переменные. Вам придётся перепроверять все случаи использования переменной, чтобы удостовериться в отсутствии ошибки в коде.
### **Достоинства**
- Каждый элемент программы должен отвечать только за одну вещь. Это сильно упрощает поддержку кода в будущем, так как вы можете спокойно заменить этот элемент, не опасаясь побочных эффектов.
- Улучшается читабельность кода. Если переменная создавалась очень давно, да еще и в спешке, она могла получить элементарное название, которое не объясняет сути хранимого значения, например, k, a2, value и т. д. У вас есть шанс исправить ситуацию, назначив новым переменным хорошие названия, отражающие суть хранимых значений. Например, `customerTaxValue`, `cityUnemploymentRate`, `clientSalutationString` и т. д.
- Этот рефакторинг помогает в дальнейшем [[Извлечение функции (Extract Function)|выделить повторяющиеся участки кода в отдельные методы]].
### **Порядок рефакторинга**
1. Найдите место в коде, где переменная в первый раз заполняется каким-то значением. В этом месте переименуйте ее, причем новое название должно соответствовать присваиваемому значению.
2. Подставьте её новое название вместо старого в тех местах, где использовалось это значение переменной.
3. Повторите операцию для случаев, где переменной присваивается новое значение
### **Обратный рефакторинг**
- [[Встраивание переменной (Inline Variable)]]
### **Ссылки**
- https://refactoring.guru/ru/split-temporary-variable
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]