Heim > Backend-Entwicklung > C++ > Sollten Methoden null oder leere Sammlungen zurückgeben?

Sollten Methoden null oder leere Sammlungen zurückgeben?

Linda Hamilton
Freigeben: 2025-01-25 15:01:09
Original
286 Leute haben es durchsucht

Should Methods Return Null or Empty Collections?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Mit C# 6 ist eine sauberere Version verfügbar:

<code class="language-c#">public List<foo> Foos { get; } = new List<foo>();</code>
Nach dem Login kopieren

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() verwenden:

<code class="language-c#">public IEnumerable<foo> GetMyFoos()
{
  return InnerGetFoos() ?? Enumerable.Empty<foo>();
}</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage