Ein Argument im Konstruktor (Nicht-Standardkonstruktor), für mich, ermöglicht ein besseres Testen. Sie können bestimmte Daten in ein Mitgliedsfeld "injizieren", die Sie nicht unbedingt tun könnten, ohne dieses Mitglied öffentlich (oder zumindest intern) zu machen oder einen zweiten Aufruf mit einer "Setter" -Eigenschaft durchzuführen.
Da Sie mehrere Konstruktoren haben können, könnten Sie eine zweite zum Testen in Verbindung mit einem Standardkonstruktor haben, wenn Sie wirklich wollen.
Es gibt keine wirklichen Leistungsprobleme, als dass Sie einen separaten Aufruf zum späteren Auffüllen von Daten oder weniger wartbaren Code mit mehreren Aufrufen der Klasse vornehmen müssen (eine zum Erstellen des Objekts, die zweite zum Auffüllen des Elements)).
EDIT: Ich erkannte, dass ich sorta die falsche Frage beantwortet. Ich dachte, er würde nach dem Unterschied zwischen Standard- und Nichtstandardkonstruktoren fragen. Jetzt sehe ich, dass es über einen Standardkonstruktor war, der das Mitglied im Konstruktor vs. in der Mitgliedsdeklaration ... initialisiert
ok, was ist mit Leistung und Speicherzuweisung? – retide
Das macht keinen Sinn. Sie können etwas nicht injizieren, wenn Sie das nicht als Konstruktor anbieten, und ein bestimmter Konstruktor zum Testen ist Code-Geruch (es zeigt auf eine Klasse mit zu vielen direkten Abhängigkeiten). Wenn Sie die Klasse wirklich entkoppeln möchten, nehmen Sie alle Parameter, die möglicherweise als Schnittstellen geändert werden müssen. – Femaref
Vielleicht, aber im Zusammenhang mit seiner Frage mit dieser Member-Variable, ist es sicherlich eine Option. Ich stimme zu, in dem Fall, wo Sie viele Eigenschaften haben können, erstellen Sie eine Schnittstelle und übergeben Sie diese. – Killnine