Namen von NamespacesNames of Namespaces

Wie wird mit anderen Benennungsrichtlinien, das Ziel bei der Benennung von Namespaces erstellt ausreichend Klarheit für den Programmierer mit dem Framework sofort wissen, was der Inhalt des Namespace wahrscheinlich ist.As with other naming guidelines, the goal when naming namespaces is creating sufficient clarity for the programmer using the framework to immediately know what the content of the namespace is likely to be. Die folgende Vorlage gibt die allgemeine Regel für die Benennung von Namespaces an:The following template specifies the general rule for naming namespaces:

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

Es folgen Beispiele für:The following are examples:

Fabrikam.Math
Litware.Security

✓ DO Präfix Namespacenamen mit einem Firmennamen, um zu verhindern, dass Namespaces aus verschiedenen Unternehmen über den gleichen Namen verfügen.✓ DO prefix namespace names with a company name to prevent namespaces from different companies from having the same name.

✓ DO ein stabiler, versionsunabhängige Produktname auf der zweiten Ebene eine Namespace-Namen verwenden.✓ DO use a stable, version-independent product name at the second level of a namespace name.

X DO NOT Organisationseinheit Hierarchien für Namen in Namespacehierarchien, als Grundlage verwenden, da Gruppennamen in Unternehmen häufig kurzlebig sind.X DO NOT use organizational hierarchies as the basis for names in namespace hierarchies, because group names within corporations tend to be short-lived. Organisieren Sie die Hierarchie der Namespaces, um Gruppen von verwandten Technologien.Organize the hierarchy of namespaces around groups of related technologies.

✓ DO PascalCasing und abgetrennten Namespacekomponenten mit Zeiträumen verwenden (z. B. Microsoft.Office.PowerPoint).✓ DO use PascalCasing, and separate namespace components with periods (e.g., Microsoft.Office.PowerPoint). Wenn Ihre Marke zwar Groß-/Kleinschreibung verwendet, sollten Sie die Groß-/Kleinschreibung, Ihre Marke definiert folgen, selbst wenn es sich von normalen Namespace Groß-/Kleinschreibung abweicht.If your brand employs nontraditional casing, you should follow the casing defined by your brand, even if it deviates from normal namespace casing.

✓ CONSIDER plural Namespacenamen verwenden, falls zutreffend.✓ CONSIDER using plural namespace names where appropriate.

Verwenden Sie z. B. System.Collections statt System.Collection.For example, use System.Collections instead of System.Collection. Markennamen und Akronyme sind jedoch Ausnahmen von dieser Regel.Brand names and acronyms are exceptions to this rule, however. Verwenden Sie z. B. System.IO statt System.IOs.For example, use System.IO instead of System.IOs.

X DO NOT denselben Namen für einen Namespace und einen Typ in diesem Namespace verwenden.X DO NOT use the same name for a namespace and a type in that namespace.

Verwenden Sie z. B. nicht Debug als Namespace benennen, und geben Sie dann auch eine Klasse namens Debug im selben Namespace.For example, do not use Debug as a namespace name and then also provide a class named Debug in the same namespace. Einige Compiler erfordern, dass solche Typen vollständig qualifiziert werden.Several compilers require such types to be fully qualified.

Namespaces und NamenstypkonfliktenNamespaces and Type Name Conflicts

X DO NOT führen Sie die generischen Namen wie z. B. Element, Node, Log, und Message.X DO NOT introduce generic type names such as Element, Node, Log, and Message.

Es ist eine sehr hohe Wahrscheinlichkeit, dass dies zur Folge hat, geben Sie den Namen in gängigen Szenarien steht in Konflikt.There is a very high probability that doing so will lead to type name conflicts in common scenarios. Sie sollten den Namen des generischen Typs zu qualifizieren (FormElement, XmlNode, EventLog, SoapMessage).You should qualify the generic type names (FormElement, XmlNode, EventLog, SoapMessage).

Es gibt bestimmte Richtlinien zum Vermeiden von namenstypkonflikten für verschiedene Kategorien von Namespaces.There are specific guidelines for avoiding type name conflicts for different categories of namespaces.

  • Application-Modell-namespacesApplication model namespaces

    Namespaces für ein einziges Anwendungsmodell werden sehr häufig zusammen verwendet werden, aber sie werden fast nie mit Namespaces anderer Modelle für die Anwendung verwendet.Namespaces belonging to a single application model are very often used together, but they are almost never used with namespaces of other application models. Z. B. die System.Windows.Forms -Namespace werden nur sehr selten zusammen mit den System.Web.UI Namespace.For example, the System.Windows.Forms namespace is very rarely used together with the System.Web.UI namespace. Im folgenden finden eine Liste der bekannten Modell Namespace Anwendungsgruppen:The following is a list of well-known application model namespace groups:

    System.Windows*
    System.Web.UI*

    X DO NOT weisen den gleichen Namen auf Typen in Namespaces in einem einzigen Anwendungsmodell.X DO NOT give the same name to types in namespaces within a single application model.

    Z. B. nicht auf einen Typ mit dem Namen hinzufügen Page auf die System.Web.UI.Adapters -Namespace, da die System.Web.UI -Namespace enthält bereits einen Typ namens Page.For example, do not add a type named Page to the System.Web.UI.Adapters namespace, because the System.Web.UI namespace already contains a type named Page.

  • InfrastrukturnamespacesInfrastructure namespaces

    Diese Gruppe enthält die Namespaces, die nur selten während der Entwicklung häufig genutzte Anwendungen importiert werden.This group contains namespaces that are rarely imported during development of common applications. Z. B. .Design Namespaces werden hauptsächlich verwendet, wenn das tools entwickeln, Programmieren.For example, .Design namespaces are mainly used when developing programming tools. Vermeiden von Konflikten mit Typen aus den Namespaces ist unerheblich.Avoiding conflicts with types in these namespaces is not critical.

  • Core-namespacesCore namespaces

    Core-Namespaces enthalten alle System Namespaces, mit Ausnahme von Namespaces der Anwendungsmodelle und die Infrastruktur-Namespaces.Core namespaces include all System namespaces, excluding namespaces of the application models and the Infrastructure namespaces. Core-Namespaces einschließen, u. a. System, System.IO, System.Xml, und System.Net.Core namespaces include, among others, System, System.IO, System.Xml, and System.Net.

    X DO NOT erteilen, die in Konflikt stehenden Namen mit einem beliebigen Typ in den Core-Namespaces Typen.X DO NOT give types names that would conflict with any type in the Core namespaces.

    Verwenden Sie z. B. niemals Stream als Typname.For example, never use Stream as a type name. Es steht in Konflikt mit System.IO.Stream, ein sehr häufig verwendete Typ.It would conflict with System.IO.Stream, a very commonly used type.

  • Technologie-Namespace-GruppenTechnology namespace groups

    Diese Kategorie enthält alle Namespaces mit den gleichen Namespaceknoten der ersten beiden (<Company>.<Technology>*), wie z. B. Microsoft.Build.Utilities und Microsoft.Build.Tasks.This category includes all namespaces with the same first two namespace nodes (<Company>.<Technology>*), such as Microsoft.Build.Utilities and Microsoft.Build.Tasks. Es ist wichtig, dass Typen, die auf eine einzelne Technologie gehören nicht miteinander in Konflikt stehen.It is important that types belonging to a single technology do not conflict with each other.

    X DO NOT Typnamen, die in Konflikt stehen würde mit anderen Typen in einer einzelnen Technologie zuweisen.X DO NOT assign type names that would conflict with other types within a single technology.

    X DO NOT einführen Typnamenskonflikte zwischen Typen in Technologienamespaces und eine Anwendungsmodellnamespace (es sei denn, die Technologie nicht mit dem Anwendungsmodell verwendet werden sollen).X DO NOT introduce type name conflicts between types in technology namespaces and an application model namespace (unless the technology is not intended to be used with the application model).

Teile ©2005, 2009 Microsoft Corporation. Alle Rechte vorbehalten.Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

Pearson Education, Inc. über Rechte vorbehalten Framework-Entwurfsrichtlinien vorgestellt: Aufrufkonventionen, Ausdrücke und Muster für die Wiederverwendbare Bibliotheken für .NET, 2. Auflage Krzysztof Cwalina und Brad Abrams, 22. Oktober 2008 von Addison-Wesley Professional als Teil der Microsoft Windows Development-Reihe veröffentlicht.Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.

Siehe auchSee also