一般的な名前付け規則General Naming Conventions

ここでは、単語の選択に関連する一般的な名前付け規則、略語と頭字語の使用に関するガイドライン、および言語固有の名前の使用を回避するための推奨事項について説明します。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.

単語の選択Word Choice

✔️は、簡単に判読できる識別子名を選択します。✔️ DO choose easily readable identifier names.

たとえば、という名前のプロパティは、 HorizontalAlignment よりも英語で読みやすく AlignmentHorizontal なります。For example, a property named HorizontalAlignment is more English-readable than AlignmentHorizontal.

✔️簡潔にするために読みやすさを優先します。✔️ DO favor readability over brevity.

プロパティ名 CanScrollHorizontally は、 ScrollableX (X 軸へのあいまいな参照) よりも優れています。The property name CanScrollHorizontally is better than ScrollableX (an obscure reference to the X-axis).

❌ アンダースコア、ハイフン、またはその他の英数字以外の文字は使用しないでください。❌ DO NOT use underscores, hyphens, or any other nonalphanumeric characters.

❌ ハンガリー表記法は使用しないでください。❌ DO NOT use Hungarian notation.

❌ 広く使用されているプログラミング言語のキーワードと競合する識別子を使用しないようにします。❌ AVOID using identifiers that conflict with keywords of widely used programming languages.

共通言語仕様 (CLS) の規則4に従って、すべての準拠言語は、その言語のキーワードを識別子として使用する名前付き項目へのアクセスを許可する機構を提供する必要があります。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# では、この場合、エスケープメカニズムとして @ sign が使用されます。C#, for example, uses the @ sign as an escape mechanism in this case. ただし、エスケープシーケンスではなく1つのメソッドを使用する方がはるかに困難であるため、一般的なキーワードを避けることをお勧めします。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.

省略形と頭字語の使用Using Abbreviations and Acronyms

❌ 識別子名の一部として省略形または短縮形を使用しないでください。❌ DO NOT use abbreviations or contractions as part of identifier names.

たとえば、で GetWindow はなくを使用 GetWin します。For example, use GetWindow rather than GetWin.

❌ 広く受け入れられていない頭字語は使用せず、必要な場合にのみ使用してください。❌ DO NOT use any acronyms that are not widely accepted, and even if they are, only when necessary.

Language-Specific 名の回避Avoiding Language-Specific Names

型名の言語固有のキーワードではなく、意味的に興味深い名前を使用する✔️ます。✔️ DO use semantically interesting names rather than language-specific keywords for type names.

たとえば、 GetLength はよりもわかりやすい名前です GetIntFor example, GetLength is a better name than GetInt.

通常は、言語固有の名前ではなく、汎用的な CLR 型名を使用します。これは、識別子が型以外のセマンティックの意味を持たない場合に、まれに発生します。✔️✔️ 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.

たとえば、に変換するメソッドは、では Int64 なくという名前にする必要があり ToInt64 ToLong Int64 ます (は C# 固有のエイリアスの CLR 名であるため 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). 次の表は、CLR 型名を使用したいくつかの基本データ型 (C#、Visual Basic、および C++ の対応する型名) を示しています。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 unsigned __int64unsigned __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

一般的な名前 (やなど) は、型名を繰り返すのではなく、通常の名前を使用します。たとえば、識別子に意味が value item なく、パラメーターの型が重要でない場合には、型名を繰り返すのではなく、✔️ます。✔️ 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.

既存の Api の新しいバージョンの命名Naming New Versions of Existing APIs

既存の API の新しいバージョンを作成するときに、古い API に似た名前を使用✔️ます。✔️ DO use a name similar to the old API when creating new versions of an existing API.

これは、Api 間の関係を強調表示するのに役立ちます。This helps to highlight the relationship between the APIs.

✔️は、既存の API の新しいバージョンを示すために、プレフィックスではなくサフィックスを追加することをお勧めします。✔️ DO prefer adding a suffix rather than a prefix to indicate a new version of an existing API.

これにより、ドキュメントを参照したり、IntelliSense を使用したりするときに検出がサポートされます。This will assist discovery when browsing documentation, or using IntelliSense. 以前のバージョンの API は、ほとんどのブラウザーや IntelliSense がアルファベット順に識別子を表示するため、新しい Api の近くに編成されます。The old version of the API will be organized close to the new APIs, because most browsers and IntelliSense show identifiers in alphabetical order.

サフィックスまたはプレフィックスを追加するのではなく、新しいがわかりやすい識別子を使用する✔️ます。✔️ CONSIDER using a brand new, but meaningful identifier, instead of adding a suffix or a prefix.

✔️は、既存の API の新しいバージョンを示すために数字のサフィックスを使用します。特に、API の既存の名前が意味のある唯一の名前 (業界標準の場合) であり、意味のあるサフィックス (または名前の変更) を追加することは適切ではありません。✔️ 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.

❌ 同じ API の以前のバージョンと区別するために、識別子に "Ex" (または同様の) サフィックスを使用しないでください。❌ DO NOT use the "Ex" (or a similar) suffix for an identifier to distinguish it from an earlier version of the same API.

✔️は、32ビット整数ではなく64ビット整数 (long 整数) で動作する Api のバージョンを導入するときに、"64" サフィックスを使用します。✔️ 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. 既存の32ビット API が存在する場合にのみ、このアプローチを行う必要があります。これは、64ビットバージョンのみの新しい Api では使用しないでください。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.

部分 © 2005、2009 Microsoft Corporation。すべての権限が予約されています。Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

2008 年 10 月 22 日に Microsoft Windows Development シリーズの一部として、Addison-Wesley Professional によって発行された、Krzysztof Cwalina および Brad Abrams による「Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition」 (フレームワーク デザイン ガイドライン: 再利用可能な .NET ライブラリの規則、用法、パターン、第 2 版) から Pearson Education, Inc. の許可を得て再印刷されています。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.

関連項目See also