Allgemeine BenennungskonventionenGeneral Naming Conventions

In diesem Abschnitt werden allgemeine Benennungs Konventionen im Zusammenhang mit der Wort Auswahl, Richtlinien zur Verwendung von Abkürzungen und Akronymen und Empfehlungen zur Vermeidung der Verwendung von sprachspezifischen Namen beschrieben.This section describes general naming conventions that relate to word choice, guidelines on using abbreviations and acronyms, and recommendations on how to avoid using language-specific names.

Wort AuswahlWord Choice

✔️ Wählen Sie leicht lesbare Bezeichnernamen aus.✔️ DO choose easily readable identifier names.

Beispielsweise ist eine Eigenschaft mit dem Namen HorizontalAlignment besser lesbar als AlignmentHorizontal .For example, a property named HorizontalAlignment is more English-readable than AlignmentHorizontal.

✔️ bevorzugen die Lesbarkeit gegenüber der Übersichtlichkeit.✔️ DO favor readability over brevity.

Der Eigenschaftsname CanScrollHorizontally ist besser als ScrollableX (ein undurchsichtiger Verweis auf die X-Achse).The property name CanScrollHorizontally is better than ScrollableX (an obscure reference to the X-axis).

❌Verwenden Sie keine Unterstriche, Bindestriche oder andere nicht alphanumerische Zeichen.❌ DO NOT use underscores, hyphens, or any other nonalphanumeric characters.

❌Verwenden Sie keine ungarische Notation.❌ DO NOT use Hungarian notation.

❌Vermeiden Sie die Verwendung von bezeichlern, die mit Schlüsselwörtern häufig verwendeter Programmiersprachen in Konflikt stehen❌ AVOID using identifiers that conflict with keywords of widely used programming languages.

Gemäß Regel 4 der Common Language Specification (CLS) müssen alle kompatiblen Sprachen einen Mechanismus bereitstellen, der den Zugriff auf benannte Elemente ermöglicht, die ein Schlüsselwort dieser Sprache als Bezeichner verwenden.According to Rule 4 of the Common Language Specification (CLS), all compliant languages must provide a mechanism that allows access to named items that use a keyword of that language as an identifier. C# verwendet in diesem Fall z. b. das @-Zeichen als Escapezeichen.C#, for example, uses the @ sign as an escape mechanism in this case. Es ist jedoch immer noch eine gute Idee, gängige Schlüsselwörter zu vermeiden, da es weitaus schwieriger ist, eine Methode mit der Escapesequenz zu verwenden, als Sie ohne Sie.However, it is still a good idea to avoid common keywords because it is much more difficult to use a method with the escape sequence than one without it.

Verwenden von Abkürzungen und AkronymenUsing Abbreviations and Acronyms

❌Verwenden Sie keine Abkürzungen oder gegen übereinstigkeiten als Teil der Bezeichnernamen.❌ DO NOT use abbreviations or contractions as part of identifier names.

Verwenden Sie z GetWindow . b. anstelle von GetWin .For example, use GetWindow rather than GetWin.

❌Verwenden Sie keine Akronyme, die nicht weitgehend akzeptiert werden, und auch dann nicht, wenn dies der Fall ist.❌ DO NOT use any acronyms that are not widely accepted, and even if they are, only when necessary.

Vermeiden von sprachspezifischen NamenAvoiding Language-Specific Names

✔️ verwenden semantisch interessante Namen anstelle von sprachspezifischen Schlüsselwörtern für Typnamen.✔️ DO use semantically interesting names rather than language-specific keywords for type names.

Beispielsweise GetLength ist ein besserer Name als GetInt .For example, GetLength is a better name than GetInt.

✔️ verwenden einen generischen CLR-Typnamen anstelle eines sprachspezifischen namens, in den seltenen Fällen, in denen ein Bezeichner über den Typ hinaus keine semantische Bedeutung hat.✔️ DO use a generic CLR type name, rather than a language-specific name, in the rare cases when an identifier has no semantic meaning beyond its type.

Beispielsweise sollte eine Methode, die in Int64 die-Klasse umwandelt, den Namen ToInt64 hat, nicht ToLong (da Int64 ein CLR-Name für den c#-spezifischen Alias ist long ).For example, a method converting to Int64 should be named ToInt64, not ToLong (because Int64 is a CLR name for the C#-specific alias long). In der folgenden Tabelle werden mehrere Basis Datentypen mit den CLR-Typnamen (sowie die entsprechenden Typnamen für c#, Visual Basic und C++) dargestellt.The following table presents several base data types using the CLR type names (as well as the corresponding type names for C#, Visual Basic, and C++).

C#C# Visual BasicVisual Basic C++C++ CLRCLR
sbytesbyte SByteSByte charchar SByteSByte
Bytebyte ByteByte unsigned charunsigned char ByteByte
shortshort ShortShort shortshort Int16Int16
ushortushort UInt16UInt16 unsigned shortunsigned short UInt16UInt16
intint IntegerInteger intint Int32Int32
uintuint UInt32UInt32 unsigned intunsigned int UInt32UInt32
longlong LongLong __int64__int64 Int64Int64
ulongulong UInt64UInt64 __int64 ohne Vorzeichenunsigned __int64 UInt64UInt64
floatfloat SingleSingle floatfloat SingleSingle
doubledouble DoubleDouble doubledouble DoubleDouble
boolbool BooleanBoolean boolbool BooleanBoolean
charchar CharChar wchar_twchar_t CharChar
stringstring StringString StringString StringString
objectobject ObjectObject ObjectObject ObjectObject

✔️ einen allgemeinen Namen verwenden, z. b. value oder item , anstatt den Typnamen zu wiederholen, in den seltenen Fällen, in denen ein Bezeichner keine Semantik Bedeutung hat und der Typ des Parameters nicht wichtig ist.✔️ DO use a common name, such as value or item, rather than repeating the type name, in the rare cases when an identifier has no semantic meaning and the type of the parameter is not important.

Benennen neuer Versionen vorhandener APIsNaming New Versions of Existing APIs

✔️ einen Namen verwenden, der der alten API ähnelt, wenn neue Versionen einer vorhandenen API erstellt werden.✔️ DO use a name similar to the old API when creating new versions of an existing API.

Dadurch wird die Beziehung zwischen den APIs hervorgehoben.This helps to highlight the relationship between the APIs.

✔️ lieber ein Suffix anstelle eines Präfixes hinzufügen, um eine neue Version einer vorhandenen API anzugeben.✔️ DO prefer adding a suffix rather than a prefix to indicate a new version of an existing API.

Dadurch wird die Ermittlung beim Durchsuchen der Dokumentation oder bei Verwendung von IntelliSense unterstützt.This will assist discovery when browsing documentation, or using IntelliSense. Die alte Version der API wird in der Nähe der neuen APIs organisiert, da die meisten Browser und IntelliSense Bezeichner in alphabetischer Reihenfolge anzeigen.The old version of the API will be organized close to the new APIs, because most browsers and IntelliSense show identifiers in alphabetical order.

✔️ sollten Sie die Verwendung eines ganz neuen, aber aussagekräftigen Bezeichners in Erwägung gezogen, anstatt ein Suffix oder ein Präfix hinzuzufügen.✔️ CONSIDER using a brand new, but meaningful identifier, instead of adding a suffix or a prefix.

in ✔️ wird ein numerisches Suffix verwendet, um eine neue Version einer vorhandenen API anzugeben. Dies gilt insbesondere, wenn der vorhandene Name der API der einzige Name ist, der sinnvoll ist (d. h., wenn es sich um einen Industriestandard handelt) und das Hinzufügen eines sinnvollen Suffixes (oder Ändern des Namens) keine geeignete Option ist.✔️ DO use a numeric suffix to indicate a new version of an existing API, particularly if the existing name of the API is the only name that makes sense (i.e., if it is an industry standard) and if adding any meaningful suffix (or changing the name) is not an appropriate option.

❌Verwenden Sie das Suffix "ex" (oder ein ähnliches Suffix) nicht für einen Bezeichner, um ihn von einer früheren Version derselben API zu unterscheiden.❌ DO NOT use the "Ex" (or a similar) suffix for an identifier to distinguish it from an earlier version of the same API.

in ✔️ wird das Suffix "64" verwendet, wenn Versionen von APIs eingeführt werden, die mit einer 64-Bit-Ganzzahl (Long Integer) anstelle einer 32-Bit-Ganzzahl arbeiten.✔️ DO use the "64" suffix when introducing versions of APIs that operate on a 64-bit integer (a long integer) instead of a 32-bit integer. Diese Vorgehensweise ist nur dann erforderlich, wenn die vorhandene 32-Bit-API vorhanden ist. Verwenden Sie dies nicht für neue APIs mit einer 64-Bit-Version.You only need to take this approach when the existing 32-bit API exists; don't do it for brand new APIs with only a 64-bit version.

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