33 lines
1.9 KiB
Markdown
33 lines
1.9 KiB
Markdown
#рефакторинг #запахи_кода
|
||
|
||
|
||
![[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]] |