Maison >développement back-end >C++ >Dois-je renvoyer null ou une collection vide de ma méthode ?

Dois-je renvoyer null ou une collection vide de ma méthode ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-25 15:11:38999parcourir

Should I Return Null or an Empty Collection from My Method?

Collections nulles ou vides : meilleures pratiques pour les retours de méthodes

Lors de la conception de méthodes qui renvoient des collections, le choix entre renvoyer null ou une collection vide a un impact significatif sur la clarté et la robustesse du code. Cet article préconise de renvoyer systématiquement les collections vides.

Pourquoi les collections vides sont préférées

Renvoyer une collection vide évite le risque d'erreurs NullReferenceException. Considérez ce scénario :

<code class="language-csharp">if (myInstance.CollectionProperty != null)
{
  foreach (var item in myInstance.CollectionProperty)
    // Process items
}</code>

Si CollectionProperty renvoie null alors qu'aucun résultat n'existe, la vérification if est obligatoire, ce qui ajoute de la complexité. Une collection vide élimine cette vérification, simplifiant le code :

<code class="language-csharp">foreach (var item in myInstance.CollectionProperty)
  // Process items (no null check needed)</code>

Élimination des contrôles nuls et de la gestion des exceptions

Le retour constant de collections vides réduit le besoin de vérifications nulles dans toute votre base de code. Cela conduit à un code plus propre et plus maintenable et réduit le risque de négliger des NullReferenceException scénarios potentiels.

Bonnes pratiques d'initialisation des propriétés

Pour les propriétés renvoyant des collections, initialisez-les lors de la création de l'objet pour éviter les références nulles. Ceci est mieux réalisé en utilisant le modèle suivant :

<code class="language-csharp">public List<Foo> Foos { get; private set; } = new List<Foo>();</code>

Cela garantit que la propriété détient toujours une collection valide (potentiellement vide).

Valeurs de retour des méthodes : la bonne approche

Les méthodes renvoyant des énumérables doivent toujours renvoyer un énumérable vide au lieu de null. Cela peut être implémenté avec élégance à l'aide de l'opérateur de fusion nulle :

<code class="language-csharp">public IEnumerable<Foo> GetMyFoos()
{
  return InnerGetFoos() ?? Enumerable.Empty<Foo>();
}</code>

Considérations relatives aux performances

Enumerable.Empty<T>() offre un avantage en termes de performances par rapport à la création de nouvelles collections vides à chaque fois. Il fournit une instance statique mise en cache, minimisant la surcharge d'allocation d'objets.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn