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