Namen von Klassen, Strukturen und SchnittstellenNames of Classes, Structs, and Interfaces

Die folgenden Benennungs Richtlinien gelten für die allgemeine Typbenennung.The naming guidelines that follow apply to general type naming.

✓ DO Benennen von Klassen und Strukturen Nomen und nominale Ausdrücke, die unter Verwendung von PascalCasing.✓ DO name classes and structs with nouns or noun phrases, using PascalCasing.

Dies unterscheidet Typnamen von Methoden, die mit Verb Ausdrücken benannt werden.This distinguishes type names from methods, which are named with verb phrases.

✓ DO Schnittstellen mit adjektivische Ausdrücke oder gelegentlich mit Nomen und nominale Ausdrücke benennen.✓ DO name interfaces with adjective phrases, or occasionally with nouns or noun phrases.

Nomen und nominale Ausdrücke sollten in seltenen Fällen verwendet werden, und Sie können darauf hinweisen, dass der Typ eine abstrakte Klasse und keine Schnittstelle sein sollte.Nouns and noun phrases should be used rarely and they might indicate that the type should be an abstract class, and not an interface.

X DO NOT Klassennamen ein Präfix (z. B. "C").X DO NOT give class names a prefix (e.g., "C").

✓ CONSIDER endet der Name der abgeleiteten Klassen mit dem Namen der Basisklasse.✓ CONSIDER ending the name of derived classes with the name of the base class.

Dies ist sehr lesbar und erläutert die Beziehung eindeutig.This is very readable and explains the relationship clearly. Einige Beispiele hierfür sind: ArgumentOutOfRangeException, eine Art Exception und SerializableAttribute, eine Art Attribute.Some examples of this in code are: ArgumentOutOfRangeException, which is a kind of Exception, and SerializableAttribute, which is a kind of Attribute. Es ist jedoch wichtig, bei der Anwendung dieser Richtlinie ein vernünftiges Urteil zu verwenden. die Button-Klasse ist beispielsweise eine Art Control-Ereignisses, obwohl Control nicht im Namen angezeigt wird.However, it is important to use reasonable judgment in applying this guideline; for example, the Button class is a kind of Control event, although Control doesn’t appear in its name.

✓ DO Schnittstellennamen als Präfix mit dem Buchstaben I, um anzugeben, dass der Typ eine Schnittstelle ist.✓ DO prefix interface names with the letter I, to indicate that the type is an interface.

Beispielsweise sind IComponent (beschreibendes Substantiv), ICustomAttributeProvider (nominaler Ausdruck) und IPersistable (Adjektiv) geeignete Schnittstellennamen.For example, IComponent (descriptive noun), ICustomAttributeProvider (noun phrase), and IPersistable (adjective) are appropriate interface names. Vermeiden Sie Abkürzungen wie andere Typnamen.As with other type names, avoid abbreviations.

✓ DO stellen Sie sicher, dass die Namen unterscheiden sich nur durch "I" auf der Schnittstellenname Präfix, wenn Sie ein paar Klassenschnittstelle – definieren, wenn die Klasse einer standardmäßigen Implementierung der Schnittstelle befindet.✓ DO ensure that the names differ only by the "I" prefix on the interface name when you are defining a class–interface pair where the class is a standard implementation of the interface.

Namen von generischen TypparameternNames of Generic Type Parameters

Generika wurden .NET Framework 2,0 hinzugefügt.Generics were added to .NET Framework 2.0. Mit der Funktion wurde eine neue Art von Bezeichner namens Typparametereingeführt.The feature introduced a new kind of identifier called type parameter.

✓ DO generische Typparameter beschreibende Namen weisen Sie nur ein einzigen Buchstaben Namen vollständig selbsterklärend und ein aussagekräftigen Namen, würde kein Wert hinzugefügt.✓ DO name generic type parameters with descriptive names unless a single-letter name is completely self-explanatory and a descriptive name would not add value.

✓ CONSIDER mit T als der Typparametername für Typen mit einem einzelnen Buchstaben Typparameter.✓ CONSIDER using T as the type parameter name for types with one single-letter type parameter.

public int IComparer<T> { ... }  
public delegate bool Predicate<T>(T item);  
public struct Nullable<T> where T:struct { ... }  

✓ DO beschreibende Typparameternamen mit Präfix T.✓ DO prefix descriptive type parameter names with T.

public interface ISessionChannel<TSession> where TSession : ISession {  
    TSession Session { get; }  
}  

✓ CONSIDER , der angibt, Einschränkungen für einen Typparameter, den Namen der Parameter platziert.✓ CONSIDER indicating constraints placed on a type parameter in the name of the parameter.

Beispielsweise kann ein Parameter, der auf ISession beschränkt ist, TSession genannt werden.For example, a parameter constrained to ISession might be called TSession.

Namen allgemeiner TypenNames of Common Types

✓ DO beim Benennen von Typen abgeleitet wurde, oder implementieren bestimmte .NET Framework-Typen in der folgenden Tabelle beschriebenen Richtlinien folgen.✓ DO follow the guidelines described in the following table when naming types derived from or implementing certain .NET Framework types.

BasistypBase Type Abgeleitete/implementierende typrichtlinieDerived/Implementing Type Guideline
System.Attribute ✓ DO Namen von benutzerdefinierten Attributklassen das Suffix "Attribute" hinzugefügt.✓ DO add the suffix "Attribute" to names of custom attribute classes.
System.Delegate ✓ DO fügen Sie das Suffix "EventHandler" in Namen von Delegaten, die in den Ereignissen verwendet werden.✓ DO add the suffix "EventHandler" to names of delegates that are used in events.

✓ DO fügen Sie das Suffix "Callback" in Namen von Delegaten, ausgenommen derer, die als Ereignishandler verwendet.✓ DO add the suffix "Callback" to names of delegates other than those used as event handlers.

X DO NOT fügen Sie das Suffix "Delegat" an einen Delegaten.X DO NOT add the suffix "Delegate" to a delegate.
System.EventArgs ✓ DO fügen Sie das Suffix "EventArgs".✓ DO add the suffix "EventArgs."
System.Enum X DO NOT von dieser Klasse abgeleitet werden; verwenden Sie das Schlüsselwort stattdessen von der Sprache unterstützt; beispielsweise in c# verwenden das enum Schlüsselwort.X DO NOT derive from this class; use the keyword supported by your language instead; for example, in C#, use the enum keyword.

X DO NOT fügen Sie das Suffix "Enum" oder "Flag für"."X DO NOT add the suffix "Enum" or "Flag."
System.Exception ✓ DO fügen Sie das Suffix "Ausnahme".✓ DO add the suffix "Exception."
IDictionary
IDictionary<TKey,TValue>
✓ DO fügen Sie das Suffix "Wörterbuch".✓ DO add the suffix "Dictionary." Beachten Sie, dass "IDictionary" ein bestimmter Sammlungstyp ist, aber diese Richtlinie hat Vorrang vor den folgenden allgemeinen Auflistungs Richtlinien.Note that IDictionary is a specific type of collection, but this guideline takes precedence over the more general collections guideline that follows.
IEnumerable
ICollection
IList
IEnumerable<T>
ICollection<T>
IList<T>
✓ DO fügen Sie das Suffix "Collection".✓ DO add the suffix "Collection."
System.IO.Stream ✓ DO fügen Sie das Suffix "Stream".✓ DO add the suffix "Stream."
CodeAccessPermission IPermission ✓ DO fügen Sie das Suffix "Berechtigung".✓ DO add the suffix "Permission."

Benennen von EnumerationenNaming Enumerations

Namen von Enumerationstypen (auch als Enumerationen bezeichnet) sollten im Allgemeinen den standardmäßigen typbenennungs Regeln (pascalnaming, usw.) entsprechen.Names of enumeration types (also called enums) in general should follow the standard type-naming rules (PascalCasing, etc.). Es gibt jedoch weitere Richtlinien, die speziell für-aufzählen gelten.However, there are additional guidelines that apply specifically to enums.

✓ DO verwenden Sie einen Namen im singular für eine Enumeration, es sei denn, seine Werte Bitfelder sind.✓ DO use a singular type name for an enumeration unless its values are bit fields.

✓ DO verwenden Sie einen Namen im plural für eine Enumeration mit Bitfelder als Werte, die so genannte Flags-Enumeration.✓ DO use a plural type name for an enumeration with bit fields as values, also called flags enum.

X DO NOT eine Suffix "Enum" im Namen der Enum-Typen verwenden.X DO NOT use an "Enum" suffix in enum type names.

X DO NOT verwenden "Flag" oder "Flags"-Suffixe in Enum-Typnamen.X DO NOT use "Flag" or "Flags" suffixes in enum type names.

X DO NOT ein Präfix auf Enumeration Wertnamen (z. B. "Ad" für ADO-Enumerationen.), "Rtf" für rich-Text-Enumerationen usw. verwenden.X DO NOT use a prefix on enumeration value names (e.g., "ad" for ADO enums, "rtf" for rich text enums, etc.).

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

reprint von der Berechtigung "Pearson Education, Inc." aus [framework-Entwurfs Richtlinien: Konventionen, Idiome und Muster für wiederverwendbare .NET-Bibliotheken, 2. Edition @ no__t-0 von Krzysztof Cwalina und Brad Abrams, veröffentlicht am 22. Oktober 2008 von Addison-Wesley Professional als Teil der Microsoft Windows-Entwicklungsreihe.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