Es wird empfohlen , das aktuelle Objekt in einem Methodenaufruf zu übergeben, wenn weniger komplexe Alternativen vorhanden sind, um dasselbe Verhalten zu erzielen.
Per Definition wird eine bidirektionale Zuordnung erstellt, sobald sie thisvon einem Objekt zu einem anderen übergeben wird.
Um Refactoring von Martin Fowler zu zitieren:
Ändern Sie die bidirektionale Zuordnung in unidirektional (200).
Bidirektionale Assoziationen sind nützlich, aber sie haben einen Preis. Der Preis ist die zusätzliche Komplexität der Aufrechterhaltung der bidirektionalen Verbindungen und der Sicherstellung, dass Objekte ordnungsgemäß erstellt und entfernt werden. Bidirektionale Assoziationen sind für viele Programmierer nicht selbstverständlich, daher sind sie häufig eine Fehlerquelle
...
Sie sollten bidirektionale Assoziationen verwenden, wenn Sie müssen, aber nicht, wenn Sie dies nicht tun. Sobald Sie sehen, dass eine bidirektionale Assoziation nicht mehr an Gewicht verliert, lassen Sie das unnötige Ende fallen.
Theoretisch sollten wir also Alarmglocken hören, wenn wir feststellen, dass wir bestehen müssen, thisund uns wirklich bemühen, andere Wege zu finden, um das vorliegende Problem zu lösen. Es gibt natürlich Zeiten, in denen es letztendlich Sinn macht, dies zu tun.
Außerdem ist es häufig erforderlich, Ihr Design vorübergehend zu beschädigen und während einer längerfristigen Umgestaltung Ihres Codes „schlechte Praktiken“ auszuführen, um eine allgemeine Verbesserung zu erzielen. (Ein Schritt zurück, zwei Schritte vorwärts).
In der Praxis habe ich festgestellt, dass sich mein Code massiv verbessert hat, indem bidirektionale Links wie die Pest vermieden wurden.