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