Namen von NamespacesNames of Namespaces

Wie bei anderen Benennungs Richtlinien ist das Ziel bei der Benennung von Namespaces, dass der Programmierer, der das Framework verwendet, ausreichend Klarheit schafft, um sofort zu wissen, welcher 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 das Benennen von Namespaces an:The following template specifies the general rule for naming namespaces:

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

Hier finden Sie einige Beispiele:The following are examples:

Fabrikam.Math Litware.SecurityFabrikam.Math Litware.Security

✔️ Namen von Namespace Namen mit einem Firmennamen zu versehen, um zu verhindern, dass Namespaces von unterschiedlichen Unternehmen denselben Namen haben.✔️ DO prefix namespace names with a company name to prevent namespaces from different companies from having the same name.

✔️ verwenden einen stabilen, Versions unabhängigen Produktnamen auf der zweiten Ebene eines Namespace namens.✔️ DO use a stable, version-independent product name at the second level of a namespace name.

❌ verwenden keine Organisations Hierarchien als Grundlage für Namen in Namespace Hierarchien, da Gruppennamen in Unternehmen tendenziell kurzlebig sind.❌ 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 von Namespaces um Gruppen verwandter Technologien.Organize the hierarchy of namespaces around groups of related technologies.

✔️ eine Pass-/Schreibweise verwenden, und trennen Sie Namespace Komponenten mit Zeiträumen (z. b. Microsoft.Office.PowerPoint).✔️ DO use PascalCasing, and separate namespace components with periods (e.g., Microsoft.Office.PowerPoint). Wenn Ihre Marke nicht herkömmliche Schreibweise verwendet, sollten Sie die von Ihrer Marke definierte Groß-/Kleinschreibung befolgen, auch wenn Sie von der normalen Namespace-Schreibweise abweicht.If your brand employs nontraditional casing, you should follow the casing defined by your brand, even if it deviates from normal namespace casing.

✔️ sollten Sie ggf. Plural Namespace Namen verwenden.✔️ CONSIDER using plural namespace names where appropriate.

Verwenden Sie beispielsweise System.Collections anstelle von System.Collection.For example, use System.Collections instead of System.Collection. Markennamen und Akronyme sind jedoch Ausnahmen für diese Regel.Brand names and acronyms are exceptions to this rule, however. Verwenden Sie beispielsweise System.IO anstelle von System.IOs.For example, use System.IO instead of System.IOs.

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

Verwenden Sie z. b. Debug nicht als Namespace Namen, und stellen Sie dann auch eine Klasse mit dem Namen Debug im gleichen Namespace bereit.For example, do not use Debug as a namespace name and then also provide a class named Debug in the same namespace. Mehrere Compiler erfordern, dass solche Typen voll qualifiziert sind.Several compilers require such types to be fully qualified.

Namespaces und Typnamen KonflikteNamespaces and Type Name Conflicts

❌ führen keine generischen Typnamen wie Element, Node, Logund Messageein.❌ DO NOT introduce generic type names such as Element, Node, Log, and Message.

Es gibt eine sehr hohe Wahrscheinlichkeit, dass dies zu Typnamens Konflikten in gängigen Szenarien führt.There is a very high probability that doing so will lead to type name conflicts in common scenarios. Sie sollten die generischen Typnamen (FormElement, XmlNode, EventLog, SoapMessage) qualifizieren.You should qualify the generic type names (FormElement, XmlNode, EventLog, SoapMessage).

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

  • Namespaces des Anwendungs ModellsApplication model namespaces

    Namespaces, die zu einem einzelnen Anwendungsmodell gehören, werden häufig zusammen verwendet, aber Sie werden fast nie mit Namespaces anderer Anwendungsmodelle 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. Beispielsweise wird der System.Windows.Forms-Namespace sehr selten in Verbindung mit dem System.Web.UI-Namespace verwendet.For example, the System.Windows.Forms namespace is very rarely used together with the System.Web.UI namespace. Im folgenden finden Sie eine Liste bekannter Anwendungsmodell-Namespace Gruppen:The following is a list of well-known application model namespace groups:

    System.Windows* System.Web.UI*System.Windows* System.Web.UI*

    ❌ nicht denselben Namen für Typen in Namespaces innerhalb eines einzelnen Anwendungs Modells.❌ DO NOT give the same name to types in namespaces within a single application model.

    Fügen Sie z. b. dem System.Web.UI.Adapters-Namespace keinen Typ mit dem Namen Page hinzu, da der System.Web.UI-Namespace bereits einen Typ mit dem Namen Pageenthält.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.

  • Infrastructure-NamespacesInfrastructure namespaces

    Diese Gruppe enthält Namespaces, die nur selten während der Entwicklung allgemeiner Anwendungen importiert werden.This group contains namespaces that are rarely imported during development of common applications. .Design-Namespaces werden z. b. hauptsächlich zum Entwickeln von Programmier Tools verwendet.For example, .Design namespaces are mainly used when developing programming tools. Es ist nicht wichtig, Konflikte mit Typen in diesen Namespaces zu vermeiden.Avoiding conflicts with types in these namespaces is not critical.

  • KernnamespacesCore namespaces

    Kernnamespaces enthalten alle System Namespaces, ausgenommen Namespaces der Anwendungsmodelle und der Infrastructure-Namespaces.Core namespaces include all System namespaces, excluding namespaces of the application models and the Infrastructure namespaces. Zu den Kernnamespaces zählen unter anderem System, System.IO, System.Xmlund System.Net.Core namespaces include, among others, System, System.IO, System.Xml, and System.Net.

    ❌ geben keine Namen für Typen an, die mit einem beliebigen Typ in den Kernnamespaces in Konflikt stehen würden.❌ DO NOT give types names that would conflict with any type in the Core namespaces.

    Verwenden Sie z. b. niemals Stream als Typnamen.For example, never use Stream as a type name. Es würde zu einem Konflikt mit System.IO.Stream, einem sehr häufig verwendeten Typ, kommen.It would conflict with System.IO.Stream, a very commonly used type.

  • Technologie-Namespace GruppenTechnology namespace groups

    Diese Kategorie enthält alle Namespaces mit denselben ersten zwei Namespace Knoten (<Company>.<Technology>*), 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 zu einer einzelnen Technologie gehören, nicht miteinander in Konflikt stehen.It is important that types belonging to a single technology do not conflict with each other.

    ❌ weisen keine Typnamen zu, die mit anderen Typen in einer einzelnen Technologie in Konflikt stehen.❌ DO NOT assign type names that would conflict with other types within a single technology.

    in ❌ werden keine Typnamen Konflikte zwischen Typen in Technologie Namespaces und einem Anwendungsmodell-Namespace eingeführt (es sei denn, die Technologie ist nicht für die Verwendung mit dem Anwendungsmodell vorgesehen).❌ 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.

Nachdruck mit Genehmigung von Pearson Education, Inc aus Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition von Krzysztof Cwalina und Brad Abrams, veröffentlicht am 22. Oktober 2008 durch Addison-Wesley Professional als Teil der Microsoft Windows Development Series.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.

Weitere InformationenSee also