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