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