Noms d'espaces de noms

Remarque

Ce contenu est réimprimé avec l’autorisation de Pearson Education, Inc. à partir des Instructions de conception d’une infrastructure : conventions, idiomes et modèles des bibliothèques réutilisables .NET, 2ème édition. Cette édition a été publiée en 2008, et le livre a été entièrement révisé dans la troisième édition. Certaines informations de cette page peuvent être obsolètes.

Comme pour d’autres instructions de dénomination, l’objectif lors de l’attribution de noms à des espaces de noms est de créer une clarté suffisante pour que le programmeur qui utilise l’infrastructure sache immédiatement ce que le contenu de l’espace de noms est susceptible d’être. Le modèle suivant spécifie la règle générale pour nommer les espaces de noms :

<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]

Voici quelques exemples :

Fabrikam.Math Litware.Security

✔️ AJOUTEZ un préfixe de nom d’entreprise pour les noms d’espaces de noms afin que les espaces de noms de différentes sociétés n’aient pas le même nom.

✔️ UTILISEZ un nom de produit stable et indépendant de la version au deuxième niveau d’un nom d’espace de noms.

❌ N’UTILISEZ PAS les hiérarchies d’organisation comme base pour les noms dans les hiérarchies d’espaces de noms, car les noms de groupes au sein des entreprises ont tendance à être de courte durée. Organisez la hiérarchie des espaces de noms autour de groupes de technologies associées.

✔️ UTILISEZ PascalCasing et séparez les composants d’espace de noms avec des points (par exemple, Microsoft.Office.PowerPoint). Si votre marque utilise une casse non traditionnelle, vous devez suivre la casse définie par votre marque, même si elle s’écarte de la casse d’espace de noms normale.

✔️ ENVISAGEZ d’utiliser des noms d’espaces de noms pluriels le cas échéant.

Par exemple, utilisez System.Collections au lieu de System.Collection. Toutefois, les noms de marques et les acronymes sont des exceptions à cette règle. Par exemple, utilisez System.IO au lieu de System.IOs.

❌ N’UTILISEZ PAS le même nom pour un espace de noms et un type dans cet espace de noms.

Par exemple, n’utilisez pas Debug comme nom d’espace de noms, si vous fournissez également une classe nommée Debug dans le même espace de noms. Plusieurs compilateurs nécessitent que ces types soient complets.

Conflits d’espaces de noms et de noms de type

❌ N’INTRODUISEZ PAS de noms de types génériques tels que Element, Node, Loget Message.

Il existe une très forte probabilité que cela entraîne des conflits de noms de type dans les scénarios courants. Vous devez qualifier les noms de types génériques (FormElement, XmlNode, EventLog, SoapMessage).

Il existe des instructions spécifiques pour éviter les conflits de noms de type pour différentes catégories d’espaces de noms.

  • Espaces de noms de modèle d’application

    Les espaces de noms appartenant à un modèle d’application unique sont très souvent utilisés ensemble, mais ils ne sont presque jamais utilisés avec les espaces de noms d’autres modèles d’application. Par exemple, l’espace de noms System.Windows.Forms est très rarement utilisé avec l’espace de noms System.Web.UI. Voici une liste de groupes d’espaces de noms de modèles d’application connus :

    System.Windows* System.Web.UI*

    ❌ NE DONNEZ PAS le même nom aux types dans les espaces de noms au sein d’un modèle d’application unique.

    Par exemple, n’ajoutez pas de type nommé Page à l’espace de noms System.Web.UI.Adapters, car l’espace de noms System.Web.UI contient déjà un type nommé Page.

  • Espaces de noms d’infrastructure

    Ce groupe contient des espaces de noms qui sont rarement importés pendant le développement d’applications courantes. Par exemple, les espaces de noms .Design sont principalement utilisés lors du développement d’outils de programmation. Il n’est pas essentiel d’éviter les conflits avec les types dans ces espaces de noms.

  • Espaces de noms principaux

    Les espaces de noms principaux incluent tous les espaces de noms System, à l’exception des espaces de noms des modèles d’application et des espaces de noms d’infrastructure. Les espaces de noms principaux incluent, entre autres, System, System.IO, System.Xml et System.Net.

    ❌ NE DONNEZ PAS de noms de types qui seraient en conflit avec n’importe quel type dans les espaces de noms principaux.

    Par exemple, n’utilisez jamais Stream comme nom de type. Il serait en conflit avec System.IO.Stream, un type très couramment utilisé.

  • Groupes d’espaces de noms de technologies

    Cette catégorie inclut tous les espaces de noms avec les mêmes deux premiers nœuds d’espace de noms (<Company>.<Technology>*), tels que Microsoft.Build.Utilities et Microsoft.Build.Tasks. Il est important que les types appartenant à une seule technologie n’entrent pas en conflit entre eux.

    ❌ N’AFFECTEZ PAS de noms de type qui seraient en conflit avec d’autres types au sein d’une seule technologie.

    ❌ N’INTRODUISEZ PAS de conflits de noms de type entre les types dans les espaces de noms de technologie et un espace de noms de modèle d’application (sauf si la technologie n’est pas destinée à être utilisée avec le modèle d’application).

Portions © 2005, 2009 Microsoft Corporation. Tous droits réservés.

Réimprimé avec l’autorisation de Pearson Education, Inc. et extrait de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition par Krzysztof Cwalina et Brad Abrams, publié le 22 octobre 2008 par Addison-Wesley Professional dans le cadre de la série sur le développement Microsoft Windows.

Voir aussi