Partager via


Noms d'espaces de noms

Le nom choisi pour un espace de noms doit indiquer les fonctionnalités offertes par les types de l'espace de noms. Par exemple, l'espace de noms System.Net.Sockets contient des types qui permettent aux développeurs d'utiliser des sockets pour communiquer sur des réseaux.

Le format général d'un nom d'espace de noms se présente comme suit :

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

Par exemple, Microsoft.WindowsMobile.DirectX.

Faites précéder les noms d'espaces de noms d'un préfixe représentant un nom de société pour éviter que les espaces de noms d'autres sociétés aient les mêmes nom et préfixe.

Utilisez un nom de produit indépendant de la version et stable au deuxième niveau d'un nom d'espace de noms.

Ne vous servez pas des hiérarchies d'organisation comme base des noms de hiérarchies d'espaces de noms car les noms des groupes au sein des sociétés ont tendance à changer.

Le nom d'espace de noms est un identificateur durable et invariable. Dans la mesure où les organisations évoluent, vous devez éviter que des réorganisations ou des restructurations ne rendent le nom d'espace de noms obsolète.

Utilisez la casse Pascal et des composants d'espace de noms séparés par des points (par exemple, Microsoft.Office.PowerPoint). Si votre marque utilise une casse inhabituelle, respectez-la même si elle s'éloigne des règles de la casse normales des espaces de noms.

Envisagez d'utiliser des noms d'espaces de noms au pluriel lorsque c'est approprié. Par exemple, utilisez System.Collections au lieu de System.Collection. Cependant, les marques et les acronymes sont des exceptions à cette règle. Utilisez, par exemple, System.IO au lieu de System.IOs.

N'utilisez pas le même nom pour un espace de noms et un type de cet espace de noms. Par exemple, évitez d'utiliser Debug comme nom d'espace de noms et de fournir également une classe appelée Debug dans le même espace de noms. Plusieurs compilateurs exigent que de tels types aient des noms qualifiés complets.

Conflits entre noms de types et d'espaces de noms

Si vous choisissez un espace de noms ou un nom de type en conflit avec un nom existant, les utilisateurs de la bibliothèque devront qualifier les références aux éléments concernés. Cela ne doit pas se produire dans la plupart des scénarios de développement.

Certaines des règles présentées dans cette section concernent plus particulièrement les catégories d'espaces de noms suivantes :

  • Espaces de noms de modèles d'application

  • Espaces de noms d'infrastructures

  • Espaces de noms principaux

  • Groupes d'espace de noms de technologies

Les espaces de noms dans un modèle d'application fournissent l'ensemble de fonctionnalités spécifiques à une classe d'applications. Par exemple, les types des espaces de noms System.Windows.Forms fournissent les fonctionnalités requises pour écrire des applications clientes Windows Forms. Les types des espaces de noms System.Web prennent en charge l'écriture d'applications serveur Web. Les espaces de noms des différents modèles d'application n'étant généralement pas utilisés dans la même application, les collisions de noms sont moins susceptibles d'affecter les développeurs qui utilisent votre bibliothèque.

Les espaces de noms d'infrastructures fournissent une assistance spécialisée et sont rarement référencés dans le code du programme. Par exemple, les types des espaces de noms *.Designer sont utilisés par les outils de développement de programme. Les espaces de noms *.Permissions constituent un autre exemple d'espaces de noms d'infrastructure. Il est peu probable que les collisions de noms avec les types des espaces de noms d'infrastructures puissent affecter les développeurs qui utilisent votre bibliothèque.

Les espaces de noms principaux sont les espaces de noms System.* (à l'exclusion des espaces de noms d'infrastructure et d'application). System et System.Text sont des exemples d'espaces de noms principaux. Vous devez éviter dans la mesure du possible les collisions de noms avec les types des espaces de noms principaux.

Les espaces de noms qui relèvent d'une technologie particulière auront les mêmes identificateurs de premier et deuxième niveaux (Company.technology.*). Vous devez éviter des collisions de noms dans une technologie.

Règles générales concernant les espaces de noms

N'introduisez pas de noms de types génériques, par exemple Element, Node, Log et Message. Il est fort probable que cela provoque des conflits de noms de types dans des scénarios classiques. Vous devez qualifier les noms des types génériques (FormElement, XmlNode EventLog, SoapMessage).

Règles concernant les espaces de noms d'application

Ne donnez pas le même nom aux types des espaces de noms au sein d'un même modèle d'application.

Si, par exemple, vous écrivez une bibliothèque de contrôles spéciaux à utiliser par les développeurs d'applications Windows Forms, vous ne devez pas introduire un type nommé Checkbox dans la mesure où il existe déjà un type de ce nom pour le modèle d'application (CheckBox).

Règles concernant les espaces de noms principaux

N'attribuez pas de noms de types susceptibles d'entrer en conflit avec un type des espaces de noms principaux.

Par exemple, n'utilisez pas Directory comme nom de type en raison du conflit avec le type Directory.

Règles concernant les espaces de noms de technologies

N'assignez pas de noms de types qui entrent en conflit avec d'autres types au sein d'une même technologie.

N'introduisez pas de conflits de noms de types entre des types des espaces de noms de technologies et d'un espace de noms de modèles d'application (sauf si la technologie ne doit normalement pas être utilisée avec le modèle d'application).

Portions Copyright 2005 Microsoft Corporation. Tous droits réservés.

Portions Copyright Addison-Wesley Corporation. Tous droits réservés.

Pour plus d'informations sur les règles de conception, consultez « règles de conception d'infrastructure : Conventions idiomes et modèles carnet de bibliothèques réutilisables framework » Krzysztof Cwalina et Brad Abrams, publiés par Addison-Wesley, 2005.

Voir aussi

Autres ressources

Instructions de conception pour le développement de bibliothèques de classes

Instructions relatives aux noms