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
, Log
et 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
etSystem.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 queMicrosoft.Build.Utilities
etMicrosoft.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.