Teilen über


Namen von Klassen, Strukturen und Schnittstellen

Hinweis

Dieser Inhalt wird mit Genehmigung von Pearson Education, Inc. aus Framework Design Guidelines: Konventionen, Idiome und Muster für wiederverwendbare .NET-Bibliotheken, 2. Auflage nachgedruckt. Diese Ausgabe wurde 2008 veröffentlicht, und das Buch wurde seitdem in der dritten Ausgabe vollständig überarbeitet. Einige der Informationen auf dieser Seite sind möglicherweise veraltet.

Die folgenden Benennungsrichtlinien gelten für allgemeine Typenbenennung.

Benennen Sie Klassen und Strukturen mit Substantiven oder Substantivausdrücken unter Verwendung von PascalCasing.

Dadurch werden Typnamen von Methoden unterschieden, die mit verbalen Ausdrücken benannt werden.

✔️ Benennen Sie Schnittstellen mit Adjektivphrasen oder gelegentlich mit Substantiven oder Substantivphrasen.

Nomen und Substantivausdrücke sollten selten verwendet werden, und sie können darauf hinweisen, dass der Typ eine abstrakte Klasse und keine Schnittstelle sein soll.

❌ Geben Sie keine Klassennamen als Präfix an (z. B. "C").

✔️ ERWÄGEN SIE, den Namen abgeleiteter Klassen mit dem Namen der Basisklasse zu beenden.

Dies ist sehr lesbar und erklärt die Beziehung deutlich. Einige Beispiele hierfür im Code sind: ArgumentOutOfRangeException, die eine Art von Exception, und SerializableAttribute, die eine Art von Attribute. Es ist jedoch wichtig, vernünftiges Urteilsvermögen bei der Anwendung dieser Richtlinie zu verwenden, Button Klasse ist z. B. eine Art Control Ereignis, obwohl Control nicht im Namen vorkommt.

Verwenden Sie das Präfix "I" vor Schnittstellennamen, um anzuzeigen, dass der Typ eine Schnittstelle ist.

Beispielsweise IComponent sind (beschreibendes Substantiv), ICustomAttributeProvider (Substantivausdruck) und IPersistable (Adjektiv) entsprechende Schnittstellennamen. Wie bei anderen Typnamen vermeiden Sie Abkürzungen.

✔️ Stellen Sie sicher, dass sich die Namen nur durch das Präfix "I" des Schnittstellennamens unterscheiden, wenn Sie ein Klassenschnittstellenpaar definieren, bei dem es sich bei der Klasse um eine Standardimplementierung der Schnittstelle handelt.

Namen generischer Typparameter

Generics wurden dem .NET Framework 2.0 hinzugefügt. Das Feature hat eine neue Art von Bezeichner namens Typparameter eingeführt.

✔️ Benennen Sie generische Typparameter mit beschreibenden Namen, es sei denn, ein einzelbuchstabiger Name ist völlig selbsterklärend und ein beschreibender Name würde keinen zusätzlichen Wert hinzufügen.

✔️ ERWÄGEN SIE die Verwendung T als Typparameternamen für Typen mit einem Einbuchstaben-Typparameter.

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

Kennzeichnen Sie beschreibende Typparameternamen mit einem Präfix von T.

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

✔️ CONSIDER gibt Einschränkungen an, die für einen Typparameter im Namen des Parameters platziert wurden.

Beispielsweise kann ein Parameter, der auf ISession beschränkt ist, TSessiongenannt werden.

Namen allgemeiner Typen

✔️ FÜHREN Sie die in der folgenden Tabelle beschriebenen Richtlinien aus, wenn Sie typen benennen, die von bestimmten .NET Framework-Typen abgeleitet oder implementiert werden.

Basistyp Abgeleiteter/Implementierungstyp-Leitfaden
System.Attribute ✔️ FÜGEN SIE das Suffix "Attribut" zu Namen von benutzerdefinierten Attributklassen hinzu.
System.Delegate ✔️ FÜGEN SIE das Suffix "EventHandler" zu Namen von Delegaten hinzu, die in Ereignissen verwendet werden.

✔️ DO fügen Sie das Suffix "Callback" zu Namen anderer Stellvertretungen als denen hinzu, die als Ereignishandler verwendet werden.

❌ FÜGEN Sie das Suffix "Delegate" nicht zu einer Stellvertretung hinzu.
System.EventArgs ✔️ FÜGEN Sie das Suffix "EventArgs" hinzu.
System.Enum ❌ Leiten Sie nicht von dieser Klasse ab; verwenden Sie stattdessen das von Ihrer Sprache unterstützte Schlüsselwort; verwenden Sie z. B. in C# das enum Schlüsselwort.

❌ FÜGEN SIE NICHT das Suffix "Enum" oder "Flag" hinzu.
System.Exception ✔️ FÜGEN Sie das Suffix "Exception" hinzu.
IDictionary
IDictionary<TKey,TValue>
✔️ Fügen Sie das Suffix "Wörterbuch" hinzu. Beachten Sie, dass IDictionary es sich um eine bestimmte Art von Sammlung handelt, aber diese Richtlinie hat Vorrang vor der folgenden allgemeinen Sammlungsrichtlinie.
IEnumerable
ICollection
IList
IEnumerable<T>
ICollection<T>
IList<T>
✔️ FÜGEN Sie das Suffix "Collection" hinzu.
System.IO.Stream ✔️ Fügen Sie das Suffix "Stream" hinzu.
CodeAccessPermission IPermission ✔️ FÜGEN Sie das Suffix "Permission" hinzu.

Benennen von Enumerationen

Namen von Enumerationstypen (auch als Enums bezeichnet) sollten im Allgemeinen den Standardregeln zur Benennung von Typen (PascalCasing usw.) entsprechen. Es gibt jedoch zusätzliche Richtlinien, die speziell für Enums gelten.

✔️ Verwenden Sie einen singulären Typnamen für eine Aufzählung, es sei denn, ihre Werte sind Bitfelder.

✔️ DO verwendet einen Pluraltypnamen für eine Aufzählung mit Bitfeldern als Werte, auch als Flags-Enumeration bezeichnet.

❌ Verwenden Sie kein "Enum"-Suffix in Enum-Typnamen.

❌ Verwenden Sie NICHT die Endungen "Flagge" oder "Flaggen" in enum-Typnamen.

❌ VERWENDEN SIE KEIN Präfix für Enumerationswertnamen (z. B. "ad" für ADO-Enumerationen, "rtf" für Rich-Text-Enumerationen usw.).

© Teile 2005, 2009 Microsoft Corporation. Alle Rechte vorbehalten.

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 von Addison-Wesley Professional als Teil der Microsoft Windows Development Series.

Siehe auch