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.

mit der Pass-/Schreibweise von ✔️ Klassen und Strukturen mit Nomen oder nominalen Ausdrücken benannt.✔️ 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.

✔️ Namen Schnittstellen mit Adjektiv Ausdrücken oder gelegentlich mit Nomen oder nominalen Ausdrücken.✔️ 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.

❌Nennen Sie keine Klassennamen als Präfix (z. b. "C").❌ DO NOT give class names a prefix (e.g., "C").

✔️ sollten den Namen abgeleiteter Klassen mit dem Namen der Basisklasse beenden.✔️ 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 von Exception und SerializableAttribute , die eine Art von ist 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. Beispielsweise ist die- Button Klasse eine Art von Control Ereignis, 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.

✔️ Geben Sie Schnittstellennamen mit dem Buchstaben I an, 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 IComponent sind (beschreibende Substantiv), ICustomAttributeProvider (Substantiv Phrase) 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.

Stellen Sie ✔️ sicher, dass sich die Namen nur durch das Präfix "I" für den Schnittstellennamen unterscheiden, wenn Sie ein Klassen –-Schnittstellen Paar definieren, bei dem die Klasse eine Standard Implementierung der Schnittstelle ist.✔️ 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.

✔️ Namen generischer Typparameter mit beschreibenden Namen verwenden, es sei denn, ein einzelner Buchstabe ist vollständig selbsterklärend, und ein beschreibender Name würde keinen Wert hinzufügen.✔️ 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.

✔️ die Verwendung T von als Typparameter Name für Typen mit einem Typparameter mit einem einzelnen Buchstaben in Erwägung gezogen.✔️ 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 { ... }

✔️ machen beschreibende Typparameter Namen mit Präfix T .✔️ DO prefix descriptive type parameter names with T.

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

✔️ in Erwägung gezogen, dass Einschränkungen für einen Typparameter im Namen des Parameters eingefügt werden.✔️ CONSIDER indicating constraints placed on a type parameter in the name of the parameter.

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

Namen allgemeiner TypenNames of Common Types

✔️ Befolgen Sie die in der folgenden Tabelle beschriebenen Richtlinien, wenn Sie Typen benennen, die von abgeleitet sind oder bestimmte .NET Framework Typen implementieren.✔️ 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 Fügen Sie den Namen von benutzerdefinierten Attribut Klassen ✔️ das Suffix "Attribute" hinzu.✔️ DO add the suffix "Attribute" to names of custom attribute classes.
System.Delegate ✔️ Fügen Sie das Suffix "EventHandler" den Namen von Delegaten hinzu, die in Ereignissen verwendet werden.✔️ DO add the suffix "EventHandler" to names of delegates that are used in events.

✔️ fügen das Suffix "Callback" Namen von Delegaten hinzu, die nicht als Ereignishandler verwendet werden.✔️ DO add the suffix "Callback" to names of delegates other than those used as event handlers.

❌Fügen Sie das Suffix "Delegat" nicht zu einem Delegaten hinzu.❌ DO NOT add the suffix "Delegate" to a delegate.
System.EventArgs Fügen Sie ✔️ das Suffix "EventArgs" hinzu.✔️ DO add the suffix "EventArgs."
System.Enum ❌Nicht von dieser Klasse ableiten; Verwenden Sie stattdessen das von Ihrer Sprache unterstützte Schlüsselwort; Verwenden Sie z. b. in c# das- enum Schlüsselwort.❌ DO NOT derive from this class; use the keyword supported by your language instead; for example, in C#, use the enum keyword.

❌Fügen Sie das Suffix "Enum" oder "Flag" nicht hinzu.❌ DO NOT add the suffix "Enum" or "Flag."
System.Exception Fügen Sie ✔️ das Suffix "Exception" hinzu.✔️ DO add the suffix "Exception."
IDictionary
IDictionary<TKey,TValue>
Fügen Sie ✔️ das Suffix "Dictionary" hinzu.✔️ DO add the suffix "Dictionary." Beachten Sie, dass es IDictionary sich um einen bestimmten Sammlungstyp handelt. diese Richtlinie hat jedoch 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>
Fügen Sie ✔️ das Suffix "Collection" hinzu.✔️ DO add the suffix "Collection."
System.IO.Stream Fügen Sie ✔️ das Suffix "Stream" hinzu.✔️ DO add the suffix "Stream."
CodeAccessPermission IPermission ✔️ Fügen Sie das Suffix "Berechtigung" hinzu.✔️ 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.

✔️ einen eindeutigen Typnamen für eine Enumeration verwenden, es sei denn, die Werte sind Bitfelder.✔️ DO use a singular type name for an enumeration unless its values are bit fields.

✔️ einen Plural Typnamen für eine Enumeration mit Bitfeldern als Werte verwenden, die auch als Flags-Enumeration bezeichnet werden.✔️ DO use a plural type name for an enumeration with bit fields as values, also called flags enum.

❌Verwenden Sie kein "Enumeration"-Suffix in Enumeration-Typnamen.❌ DO NOT use an "Enum" suffix in enum type names.

❌Verwenden Sie keine "Flag"-oder "Flags"-Suffixe in Enumeration-Typnamen.❌ DO NOT use "Flag" or "Flags" suffixes in enum type names.

❌Verwenden Sie kein Präfix für enumerationswertnamen (z. b. "AD" für ADO-Enumerationen, "RTF" für Rich-Text-Enumerationen usw.).❌ 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.

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.

Siehe auchSee also