In "Clean Code Talks" bin ich auf eine nette Entscheidungshilfe zur angesprochenen Frage gestoßen:
- Ein Objekt wird in ein anderes im Konstruktor "injeziert", wenn dessen Lebenszeit gleich lang oder länger ist als das des Objektes, in welches wir injezieren.
- Ist dies nicht der Fall, sollte es als Operationsparameter übergeben werden.
Als Beispiel nennt der Referent die Objekte Haus und Tür (sehr praxisnah, schließlich kommen wir ja nicht aus der IT sondern Baubranche???). Die Tür sollte vom Haus nur im Konstruktor gefordert werden, wenn diese mindestens genau so lange "lebt", wie das Haus. Ein kurzzeitiges Dejavú wäre besser per Operationsparameter abzubilden.
Klingt banal, ist es auch, aber die Regel hilft bei komplizierten Abläufen wieder den richtigen Weg zu finden.
Der zugrunde liegende Clean Code Talk kann hier gefunden werden:
http://www.youtube.com/watch?v=RlfLCWKxHJ0