Стрільба дробом
«Стрільба дробом» схожа на Розбіжні модифікації, але насправді є протилежністю цього запаху. «Розбіжні модифікації» мають місце, коли є один клас, в якому робиться багато різних змін, а «Стрільба дробом» — це одна зміна, що зачіпає одночасно багато класів.
Симптоми і ознаки
При виконанні будь-яких модифікацій доводиться вносити безліч дрібних змін у купу класів.
![](/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)
Виграш
-
Покращує організацію коду.
-
Зменшує дублювання коду.
-
Спрощує підтримку.