Null oder leere Sammlung zurückgeben: Best Practices
Beim Entwerfen einer Methode, die eine Sammlung als Rückgabewerttyp zurückgibt, stellt sich die Frage: Soll sie Null oder eine leere Sammlung zurückgeben? Best Practice empfiehlt dringend, in jedem Fall eine leere Sammlung zurückzugeben.
Warum ein leeres Set wählen?
Die Rückgabe von Null ist eine schlechte Praxis, da sie zu unnötiger Codekomplexität und potenziellen Laufzeitfehlern führt. Wenn Sie beispielsweise null für eine Sammlungseigenschaft zurückgeben:
<code class="language-c#">if(myInstance.CollectionProperty != null) { foreach(var item in myInstance.CollectionProperty) /* 如果 CollectionProperty 为 null,此代码可能会失败 */ }</code>
Dieser Code kann eine Ausnahme verursachen, wenn myInstance.CollectionProperty tatsächlich null ist. Stattdessen ist es besser, eine leere Sammlung zurückzugeben, um sicherzustellen, dass der obige Code weiterhin fehlerfrei ausgeführt werden kann.
Best Practices für Immobilien
Für Eigenschaften, die eine Sammlung zurückgeben, wird empfohlen, die Eigenschaft nur einmal zu initialisieren. Dies kann während des Konstruktors der Klasse erfolgen, die die Eigenschaft enthält:
<code class="language-c#">public List<foo> Foos { public get; private set; } public Bar() { Foos = new List<foo>(); }</code>
Mit C# 6 ist eine sauberere Version verfügbar:
<code class="language-c#">public List<foo> Foos { get; } = new List<foo>();</code>
Best Practices für Methoden
Wenn bei Methoden, die eine Sammlung zurückgeben, die tatsächliche Sammlung nicht vorhanden ist, wird eine leere Sammlung zurückgegeben. Zu diesem Zweck können Sie die Methode Enumerable.Empty
<code class="language-c#">public IEnumerable<foo> GetMyFoos() { return InnerGetFoos() ?? Enumerable.Empty<foo>(); }</code>
Dieser Ansatz stellt sicher, dass die Methode auch dann eine leere Sammlung zurückgibt, wenn InnerGetFoos() null zurückgibt, wodurch potenzielle Fehler vermieden werden.
Das obige ist der detaillierte Inhalt vonSollten Methoden null oder leere Sammlungen zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!