Заздрісні функції
Симптоми і ознаки
Метод звертається до даних іншого об’єкта частіше, ніж до власних даних.
Причини появи
Цей запах може з’явитися після переміщення якихось полів в клас даних. В цьому випадку операції з даними, можливо, також слід перемістити в цей клас.
Лікування
Слід дотримуватися такого правила: те, що змінюється разом, треба зберігати в одному місці. Зазвичай дані і функції, які використовують ці дані, також змінюються разом (хоча бувають виключення).
-
Якщо метод явно слід перенести в інше місце, застосуйте переміщення методу.
-
Якщо тільки частина методу звертається до даних іншого об’єкта, застосуйте відокремлення методу до цієї частини.
-
Якщо метод використовує функції декількох інших класів, треба спочатку визначити, в якому класі знаходиться найбільше даних, що використовуються. Потім слід перемістити метод в цей клас разом з іншими даними. Як альтернатива, за допомогою відокремлення методу метод розбивається на декілька частин, і вони розміщуються в різних частинах інших класів.
Виграш
-
Зменшення дублювання коду (якщо код обробки даних переїхав в одне загальне місце).
-
Поліпшення організації коду (оскільки методи роботи з даними знаходяться біля цих даних).
Не варто чіпати, якщо...
- Бувають випадки, коли поведінка навмисно відділяється від класу, що містить дані. Найчастіше це роблять для того, щоби мати можливість динамічно міняти цю поведінку (патерни Стратегія, Відвідувач і так далі).