Mit einem früheren Team mit denen ich gearbeitet, wann immer eine neuen Service-Klasse erstellt wurde, die Geschäftslogik zwischen der Datenschicht und Präsentationsschicht, etwa wie folgt wurde getan, um handhaben:Warum überprüfen Sie, ob eine Klassenvariable null ist, bevor Sie ein neues Objekt im Konstruktor instanziieren?
class DocumentService
{
public DocumentRepository DocumentRepository { get; set; }
public DocumentService()
{
if (DocumentRepository == null) DocumentRepository = new DocumentRepository();
}
}
ich nie ganz verstanden, warum das Kontroll für null
war da. Wenn der Konstruktor aufgerufen wird, bedeutet das, dass er NULL sein muss ... da es eine neue Instanz ist, richtig?
Warum sollte dies getan werden? Es scheint mir, als ob es ein überflüssiger Schritt ist, aber ich möchte nichts verpassen und es als schlechte Übung abtun.
Ein Grund, warum ich denken konnte: irgendwo auf der Straße, können Sie es statisch und vergessen Sie es im Konstruktor und jetzt jedes Mal ein neues Objekt wird erstellt machen wollen , die statische Eigenschaft wird überschrieben. – Corak
Der einzige Grund, warum ich für diese Überprüfung sehen konnte, ob es Methodenaufrufe oberhalb dieser Zeile im Konstruktor gibt, die das Repository festlegen könnten. (Ich weiß, dass es in Ihrem Beispiel nicht gibt) – Sayse
Ist die 'DocumentRepository'-Eigenschaft eine Autoproperty genau so, wie Sie sie in Ihre Frage geschrieben haben? Wenn ja, dann ist es in der Tat sinnlos. Wenn nicht, dann können wir nicht antworten, ohne die tatsächliche Implementierung zu sehen. –