#рефакторинг #запахи_кода ![[Pasted image 20241112224740.png]] > “Стрельба дробью” подобна расходящимся изменениям, но представляет со­бой их противоположность. Унюхать ее можно, когда при выполнении любых из­менений приходится вносить множество мелких модификаций в большое число различных модулей. Когда изменения разбросаны повсюду, их трудно искать и можно пропустить важное изменение. ### **Признаки** - При выполнении любых модификаций приходится вносить множество мелких изменений в большое число классов ### **Причины появления** - Одна обязанность была разделена среди множества классов ![[Pasted image 20241112224755.png]] ### **Рефакторинги** - [[Перенос функции (Move Function)]] - [[Перенос поля (Move Field)]] - [[Объединение функций в класс (Combine Functions into Class)]] - [[Разделение этапа (Split Phase)]] - [[Встраивание функции (Inline Function)]] - [[Встраивание класса (Inline Class)]] ![[Pasted image 20241112224804.png]] ### **Результат** - Улучшает организацию кода - Уменьшает дублирование кода - Упрощает поддержку. ### **Ссылки** - [https://refactoring.guru/ru/smells/shotgun-surgery](https://refactoring.guru/ru/smells/shotgun-surgery) - [[Мартин Фаулер - Рефакторинг кода на JavaScript]]