2026-02-23 19:52:05 +03:00

34 lines
2.3 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 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]]