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

41 lines
2.1 KiB
Markdown
Raw Permalink 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 20250131091654.png]]
### **Проблема**
Код легче понять, когда связанные друг с другом фрагменты находятся рядом.
```javascript
const pricingPlan = retrievePricingPlan();
const order = retreiveOrder();
let charge;
const chargePerUnit = pricingPlan.unit;
```
### **Решение**
Если несколько строк кода обращаются к одной и той же структуре данных, то лучше, чтобы они были вместе, а не были перемешаны с кодом, обращающимся к другим структурам данных
```javascript
const pricingPlan = retrievePricingPlan();
const chargePerUnit = pricingPlan.unit;
const order = retreiveOrder();
let charge;
```
### **Порядок рефакторинга**
1. Определите целевое местоположение для перемещения фрагмента кода. Изучите инструкции между исходным и целевым местоположениями, чтобы увидеть, нет ли каких-то помех для кандидата на перемещение. Если таковые имеются — откажитесь от дальнейших действий.
2. Вырежьте фрагмент из исходного местоположения и вставьте его в целевую позицию.
### **Борется с запахом**
- [[Дублируемый код]]
- [[Большой класс]]
- [[Расходящиеся изменения]]
- [[Группы данных]]
- [[Одержимость примитивами]]
- [[Временное поле]]
- [[Неуместная близость]]
### **Обратный рефакторинг**
- [[Встраивание класса (Inline Class)]]
### **Ссылки**
- https://refactoring.guru/ru/extract-class
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]