Стрельба дробью
«Стрельба дробью» похожа на Расходящиеся модификации, но является противоположностью этого запаха. «Расходящиеся модификации» имеют место, когда есть один класс, в котором производится много различных изменений, а «Стрельба дробью» — это одно изменение, затрагивающее много классов.
Симптомы и признаки
При выполнении любых модификаций приходится вносить множество мелких изменений в большое число классов.
![](/images/refactoring/content/smells/shotgun-surgery-01.png?id=9cc1117a6d787364788e152a3adb6a53)
Причины появления
Одна обязанность была разделена среди множества классов. Это может случиться после фанатичного исправления Расходящихся модификаций.
![](/images/refactoring/content/smells/shotgun-surgery-02.png?id=48f8a4a0f17d112e02ae73bacaed43fa)
Лечение
-
Вынести все изменения в один класс позволят перемещение метода и перемещение поля. Если для выполнения этого действия нет подходящего класса, то следует предварительно создать новый.
-
Если после вынесения кода в один класс в оригинальных классах мало что осталось, следует попытаться от них избавиться, воспользовавшись встраиванием класса.
![](/images/refactoring/content/smells/shotgun-surgery-03.png?id=cf013f14eb5cde98bd48595a1c9836a9)
Выигрыш
-
Улучшает организацию кода.
-
Уменьшает дублирование кода.
-
Упрощает поддержку.