34 lines
2.3 KiB
Markdown
34 lines
2.3 KiB
Markdown
#рефакторинг #запахи_кода
|
||
|
||
![[Pasted image 20241112225311.png]]
|
||
|
||
> Данные — как дети: они любят сбиваться в тесные группы. Часто можно видеть, как одни и те же три-четыре элемента данных встречаются во множестве мест: поля в паре классов, параметры в нескольких методах. Данные, встречающиеся совместно, имеет смысл превращать в отдельный класс
|
||
|
||
### **Признаки**
|
||
- В разных частях кода встречаются одинаковые группы переменных (например, параметры подключения к базе данных). Такие группы следует превращать в самостоятельные классы.
|
||
|
||
### **Причины появления**
|
||
- Следствие плохой структурированности программы или программирования методом копирования-вставки
|
||
|
||
![[Pasted image 20241112225320.png]]
|
||
|
||
### **Рефакторинги**
|
||
- [[Извлечение класса (Extract Class)]]
|
||
- [[Введение объекта параметра (Introduce Parameter Object)]]
|
||
- [[Сохранение всего объекта (Preserve Whole Object)]]
|
||
|
||
![[Pasted image 20241112225331.png]]
|
||
|
||
### **Результат**
|
||
- Улучшает понимание и организацию кода
|
||
- Операции над определёнными данными теперь собраны в одном месте, и их не надо искать по всему коду
|
||
- Уменьшает размер кода
|
||
|
||
### **Не стоит трогать, если...**
|
||
|
||
- Передача всего объекта в параметрах метода вместо передачи его значений (элементарных типов) может создать нежелательную зависимость между двумя классами.
|
||
|
||
### **Ссылки**
|
||
|
||
- [https://refactoring.guru/ru/smells/data-clumps](https://refactoring.guru/ru/smells/data-clumps)
|
||
- [[Мартин Фаулер - Рефакторинг кода на JavaScript]] |