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