Base/Knowledges/IT/Рефакторинг/Запахи кода/Расходящиеся изменения.md
2026-02-23 19:52:05 +03:00

29 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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