29 lines
2.6 KiB
Markdown
29 lines
2.6 KiB
Markdown
#рефакторинг #запахи_кода
|
||
|
||
![[Pasted image 20241112224346.png]]
|
||
|
||
> Планируя изменение, мы хотим иметь возможность перейти в определенную точку программы и внести изменения именно в ней.
|
||
> Расходящиеся изменения имеют место тогда, когда один модуль часто изменяется различными путями по разным причинам. Взаимодействие с базой данных и обработка финансов имеют разные контексты, так что можно облегчить свою программистскую жизнь, перемещая эти контексты в разные модули. Таким образом, когда требуется изменение в одном контексте, следует разобраться только с ним одним и игнорировать другой. Мы всегда считали это важным, но теперь, когда наш мозг с возрастом уменьшается в размерах, этот подход становится просто необходимым
|
||
|
||
### **Признаки**
|
||
- При внесении изменений в класс приходится изменять большое число различных методов. Например, для добавления нового вида товара вам нужно изменить методы поиска, отображения и заказа товаров.
|
||
|
||
### **Причины появления**
|
||
- Следствие плохой структурированности программы или программирования методом копирования-вставки
|
||
|
||
![[Pasted image 20241112224448.png]]
|
||
|
||
### **Рефакторинги**
|
||
- [[Разделение этапа (Split Phase)]]
|
||
- [[Перенос функции (Move Function)]]
|
||
- [[Извлечение функции (Extract Function)]]
|
||
- [[Извлечение класса (Extract Class)]]
|
||
|
||
### **Результат**
|
||
- Улучшает организацию кода
|
||
- Уменьшает дублирование кода
|
||
- Упрощает поддержку
|
||
|
||
### **Ссылки**
|
||
- [https://refactoring.guru/ru/smells/divergent-change](https://refactoring.guru/ru/smells/divergent-change)
|
||
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]] |