Base/Knowledges/IT/Рефакторинг/Методы рефакторинга/Разделение цикла (Split Loop).md
2026-02-23 19:52:05 +03:00

42 lines
1.5 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 20250131092246.png]]
### **Проблема**
Циклы, которые решают одновременно разные задачи только потому, что они могут сделать это за один проход цикла
```javascript
let averageAge = 0;
let totalSalary = 0;
for (const p of people) {
averageAge += p.age;
totalSalary += p.salary;
}
averageAge = averageAge / people.length;
```
### **Решение**
Разделение цикла может облегчить его использование
```javascript
let totalSalary = 0;
for (const p of people) {
totalSalary += p.salary;
}
let averageAge = 0;
for (const p of people) {
averageAge += p.age;
}
averageAge = averageAge / people.length;
```
### **Причины рефакторинга**
Разделение цикла также может облегчить его использование. Цикл, который
вычисляет одно значение, может просто его вернуть. Циклы, которые решают
много задач, должны возвращать структуры или заполнять локальные переменные.
### **Порядок рефакторинга**
1. Скопируйте цикл
2. Определите и устраните дублирующиеся побочные действия
### **Ссылки**
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]]