È una cattiva pratica passare l'oggetto corrente in una chiamata al metodo se esistono alternative meno complesse per ottenere lo stesso comportamento.
Per definizione, un'associazione bidirezionale viene creata non appena thissi passa da un oggetto all'altro.
Per citare Refactoring, di Martin Fowler:
Cambia associazione bidirezionale in unidirezionale (200)
Le associazioni bidirezionali sono utili, ma hanno un prezzo. Il prezzo è l'ulteriore complessità del mantenimento dei collegamenti a due vie e la garanzia che gli oggetti vengano creati e rimossi correttamente. Le associazioni bidirezionali non sono naturali per molti programmatori, quindi spesso sono fonte di errori
...
Dovresti usare associazioni bidirezionali quando ne hai bisogno, ma non quando non lo fai. Non appena vedi che un'associazione bidirezionale non sta più tirando il suo peso, lascia cadere l'estremità non necessaria.
Quindi, in teoria, dovremmo sentire un campanello d'allarme quando scopriamo di dover passare thise sforzarci di pensare ad altri modi per risolvere il problema in questione. Ci sono, naturalmente, momenti in cui, in ultima istanza, ha senso farlo.
Inoltre è spesso necessario corrompere temporaneamente il progetto, facendo "cattive pratiche", durante un refactoring a lungo termine del codice per un miglioramento generale. (Un passo indietro, due passi avanti).
In pratica ho trovato il mio codice è migliorata in maniera massiccia , evitando i collegamenti bidirezionali come la peste.