Групи даних
Симптоми і ознаки
Іноді в різних частинах коду зустрічаються однакові групи змінних (наприклад, параметри підключення до бази даних). Такі групи слід перетворювати на самостійні класи.
![](/images/refactoring/content/smells/data-clumps-01.png?id=9d8a38ce942720cee728797eba695a2f)
Причини появи
Поява груп даних є наслідком поганої структурованості програми або програмування методом копіювання-вставки.
Щоб виявити групу даних, достатньо видалити одне зі значень даних і перевірити, чи збережуть сенс інші. Якщо ні, це вірна ознака того, що група змінних напрошується на об’єднання їх в об’єкт.
Лікування
-
Якщо дані, що повторюються, є полями якогось класу, використайте відокремлення класу для переміщення полів у власний клас.
-
Якщо ті ж групи даних передаються в параметрах методів, використайте заміну параметрів об’єктом щоб виділити їх в спільний клас.
-
Якщо деякі з цих даних передаються в інші методи, подумайте про можливість передачі в метод усього об’єкта даних замість окремих полів (у цьому допоможе передача всього об’єкта).
-
Подивіться на код, який використовує ці поля. Можливо, має сенс перенести цей код в клас даних.
![](/images/refactoring/content/smells/data-clumps-02.png?id=cfb0a8fa64a983473dd31527e28ae158)
Виграш
-
Покращує розуміння і організацію коду. Операції над певними даними тепер зібрані в одному місці, їх не потрібно шукати за всім кодом.
-
Зменшує розмір коду.
![](/images/refactoring/content/smells/data-clumps-03.png?id=c170bbdea77b7d4a26947ef328b70adc)
Не варто чіпати, якщо...
- Передача всього об’єкта в параметрах методу замість передачі його значень (елементарних типів) може створити небажану залежність між двома класами.