名前付け規則Naming rules

名前付け規則は、クラス、プロパティ、メソッドなど、.NET プログラミング言語のコード要素の名前付けに関するものです。Naming rules concern the naming of .NET programming language code elements, such as classes, properties, and methods. たとえば、パブリック メンバーは大文字表記とする必要があること、またはプライベート フィールドは _ で始まる必要があることを指定できます。For example, you can specify that public members must be capitalized or that private fields must begin with _.

名前付け規則には、次の3つの部分があります。A naming rule has three parts:

  • 適用されるシンボルのグループ。The group of symbols it applies to.
  • 規則に関連付ける名前付けスタイル。The naming style to associate with the rule.
  • 規則を適用するための重大度。The severity for enforcing the convention.

EditorConfig ファイルで名前付け規則を定義します。You define naming rules in an EditorConfig file.

一般的な構文General syntax

名前付け規則、シンボルグループ、または名前付けスタイルを定義するには、次の構文を使用して1つ以上のプロパティを設定します。To define a naming rule, symbol group, or naming style, set one or more properties using the following syntax:

<prefix>.<title>.<propertyName> = <propertyValue>

各プロパティは一度だけ設定する必要がありますが、一部の設定では複数のコンマ区切りの値を使用できます。Each property should only be set once, but some settings allow multiple, comma-separated values.

プロパティの順序は重要ではありません。The order of the properties is not important.

<prefix>

<prefix> 定義する — 名前付け規則、シンボルグループ、または名前付けスタイルの要素の種類を指定し — ます。次のいずれかを指定する必要があります。<prefix> specifies which kind of element is being defined—naming rule, symbol group, or naming style—and must be one of the following:

のプロパティを設定するにはTo set a property for プレフィックスを使用するUse the prefix Example
名前付け規則Naming rule dotnet_naming_rule dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
シンボルグループSymbol group dotnet_naming_symbols dotnet_naming_symbols.interface.applicable_kinds = interface
名前付けスタイルNaming style dotnet_naming_style dotnet_naming_style.pascal_case.capitalization = pascal_case

—次のセクションで説明するように、定義の名前付け規則シンボルグループ、または名前付けスタイルの各種類 — には、独自のサポートされるプロパティがあります。Each type of definition—naming rule, symbol group, or naming style—has its own supported properties, as described in the following sections.

<title>

<title> 複数のプロパティ設定を1つの定義に関連付けるために選択するわかりやすい名前を指定します。<title> is a descriptive name you choose that associates multiple property settings into a single definition. たとえば、次のプロパティでは、とという2つのシンボルグループ定義が生成され interface types ます。それぞれに2つのプロパティが設定されています。For example, the following properties produce two symbol group definitions, interface and types, each of which has two properties set on it.

dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected

dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum, delegate
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected

名前付け規則のプロパティNaming rule properties

ルールを有効にするには、すべての名前付けルールプロパティが必要です。All naming rule properties are required for a rule to take effect.

プロパティProperty DescriptionDescription
symbols シンボルグループのタイトル。このルールを適用するシンボルを定義します。The title of the symbol group, defining the symbols to which this rule should be applied
style この規則に関連付ける必要がある名前付けスタイルのタイトルThe title of the naming style which should be associated with this rule
severity 名前付け規則を適用するための重大度を設定します。Sets the severity with which to enforce the naming rule. 関連する値を、使用可能な 重大度レベルのいずれかに設定します。1Set the associated value to one of the available severity levels.1

注:Notes:

  1. 名前付け規則内の重要度の指定は、Visual Studio などの開発 Ide 内でのみ尊重されます。Severity specification within a naming rule is only respected inside development IDEs, such as Visual Studio. この設定は、C# または VB コンパイラで認識されないため、ビルド時には尊重されません。This setting is not understood by the C# or VB compilers, hence not respected during build. 代わりに、ビルドに名前付けスタイルルールを適用するには、 このセクションで説明されているように、ルール ID に基づく重要度の構成を使用して重要度を設定する必要があります。Instead, to enforce naming style rules on build, you should set the severity by using the rule ID-based severity configuration as explained in this section. 詳細については、こちらの GitHub の問題のページを参照してください。For more information, see this GitHub issue.

ルールの順序Rule order

EditorConfig ファイルで名前付け規則を定義する順序は問題ではありません。The order in which naming rules are defined in an EditorConfig file doesn't matter. 名前付け規則は、規則自体の定義に従って自動的に並べ替えられます。The naming rules are automatically ordered according to the definition of the rules themselves. EditorConfig 言語サービス拡張機能では、EditorConfig ファイルを分析して、ファイルでの規則の順序が実行時にコンパイラで使用される順序と異なる場合に報告できます。The EditorConfig Language Service extension can analyze an EditorConfig file and report cases where the rule ordering in the file is different to what the compiler will use at run time.

注意

Visual studio 2019 バージョン16.2 より前のバージョンの Visual Studio を使用している場合、EditorConfig ファイルでは、名前付け規則を最も限定的なものから最も限定的なものに順番に並べ替える必要があります。If you're using a version of Visual Studio earlier than Visual Studio 2019 version 16.2, naming rules should be ordered from most-specific to least-specific in the EditorConfig file. 適用可能な最初に検出されたルールのみが適用されます。The first rule encountered that can be applied is the only rule that is applied. ただし、同じ名前のルールの "プロパティ" が複数ある場合は、その名前の最も最近見つかったプロパティが優先されます。However, if there are multiple rule properties with the same name, the most recently found property with that name takes precedence. 詳細については、「File hierarchy and precedence (ファイルの階層と優先順位)」を参照してください。For more information, see File hierarchy and precedence.

シンボルグループのプロパティSymbol group properties

シンボルグループの次のプロパティを設定して、グループに含めるシンボルを制限できます。You can set the following properties for symbol groups, to limit which symbols are included in the group. 1つのプロパティ設定に複数の値を指定するには、コンマで区切ります。To specify multiple values in a single property setting, separate them with a comma.

プロパティProperty 説明Description 使用できる値Allowed values 必須Required
applicable_kinds グループ1のシンボルの種類Kinds of symbols in the group 1 *(この値を使用すると、すべてのシンボルが指定されます)* (use this value to specify all symbols)
namespace
class
struct
interface
enum
property
method
field
event
delegate
parameter
type_parameter
local
local_function
YesYes
applicable_accessibilities グループ内のシンボルのアクセシビリティレベルAccessibility levels of the symbols in the group *(この値を使用すると、すべてのアクセシビリティ レベルが指定されます)* (use this value to specify all accessibility levels)
public
internal または friendinternal or friend
private
protected
protected_internal または protected_friendprotected_internal or protected_friend
private_protected
local (メソッド内で定義されたシンボルの場合)local (for symbols defined within a method)
YesYes
required_modifiers 指定した すべて の修飾子を持つシンボルのみ一致 2Only match symbols with all the specified modifiers 2 abstract または must_inheritabstract or must_inherit
async
const
readonly
static または shared 3static or shared 3
NoNo

注:Notes:

  1. 組メンバーは現在ではサポートされていません applicable_kindsTuple members aren't currently supported in applicable_kinds.
  2. シンボルグループは、プロパティ内の すべて の修飾子と一致し required_modifiers ます。The symbol group matches all the modifiers in the required_modifiers property. このプロパティを省略した場合、一致には特定の修飾子は必要ありません。If you omit this property, no specific modifiers are required for a match. このことは、この規則が適用されるかどうかに、シンボルの修飾子が影響を及ぼさないことを意味します。This means a symbol's modifiers have no effect on whether or not this rule is applied.
  3. グループのプロパティにまたはが含まれている場合は、暗黙的に使用される static shared ため、グループに required_modifiers もシンボルが含まれ const static / Shared ます。If your group has static or shared in the required_modifiers property, the group will also include const symbols because they are implicitly static/Shared. ただし、 static 名前付け規則をシンボルに適用しない場合は、 const のシンボルグループを使用して新しい名前付け規則を作成でき const ます。However, if you don't want the static naming rule to apply to const symbols, you can create a new naming rule with a symbol group of const.

名前付けスタイルのプロパティNaming style properties

名前付けスタイルは、規則に適用する規則を定義します。A naming style defines the conventions you want to enforce with the rule. 次に例を示します。For example:

  • を大文字にする PascalCaseCapitalize with PascalCase
  • で始まる m_Starts with m_
  • で終わる _gEnds with _g
  • 単語の区切り __Separate words with __

名前付けスタイルには、次のプロパティを設定できます。You can set the following properties for a naming style:

プロパティProperty 説明Description 使用できる値Allowed values 必須Required
capitalization シンボル内の単語の大文字/小文字のスタイルCapitalization style for words within the symbol pascal_case
camel_case
first_word_upper
all_upper
all_lower
1Yes1
required_prefix 次の文字で始まる必要があります。Must begin with these characters NoNo
required_suffix 次の文字で終わる必要があります。Must end with these characters NoNo
word_separator シンボル内の単語は、この文字で区切る必要があります。Words within the symbol need to be separated with this character NoNo

注:Notes:

  1. 名前付けスタイルの一部として大文字/小文字スタイルを指定する必要があります。そうしないと、名前付けスタイルは無視される可能性があります。You must specify a capitalization style as part of your naming style, otherwise your naming style might be ignored.

既定の名前付けスタイルDefault naming styles

カスタム名前付け規則を指定しない場合は、次の既定のスタイルが使用されます。If you don't specify any custom naming rules, the following default styles are used:

  • アクセシビリティが publicprivateinternalprotected、または protected_internal であるクラス、構造体、列挙型、プロパティ、およびイベントでは、既定の名前付けスタイルはパスカル ケースです。For classes, structs, enumerations, properties, and events with public, private, internal, protected, or protected_internal accessibility, the default naming style is Pascal case.

  • アクセシビリティが publicprivateinternalprotected、または protected_internal であるインターフェイスでは、既定の名前付けスタイルはパスカル ケースであり、プレフィックス I を付ける必要があります。For interfaces with public, private, internal, protected, or protected_internal accessibility, the default naming style is Pascal case with a required prefix of I.

Example

次の .editorconfig ファイルには、パブリック プロパティ、メソッド、フィールド、イベント、デリゲートを大文字で入力する必要があることを指定した名前付け規則が含まれています。The following .editorconfig file contains a naming convention that specifies that public properties, methods, fields, events, and delegates must be capitalized. この名前付け規則では、コンマを使用して個々のシンボル値を区切ることにより、規則を適用する複数の種類のシンボルを指定しています。Notice that this naming convention specifies multiple kinds of symbol to apply the rule to, using a comma to separate the values.

[*.{cs,vb}]

# Defining the 'public_symbols' symbol group
dotnet_naming_symbols.public_symbols.applicable_kinds           = property,method,field,event,delegate
dotnet_naming_symbols.public_symbols.applicable_accessibilities = public
dotnet_naming_symbols.public_symbols.required_modifiers         = readonly

# Defining the `first_word_upper_case_style` naming style
dotnet_naming_style.first_word_upper_case_style.capitalization = first_word_upper

# Defining the `public_members_must_be_capitalized` naming rule, by setting the symbol group to the 'public symbols' symbol group,
dotnet_naming_rule.public_members_must_be_capitalized.symbols   = public_symbols
# setting the naming style to the `first_word_upper_case_style` naming style,
dotnet_naming_rule.public_members_must_be_capitalized.style    = first_word_upper_case_style
# and setting the severity.
dotnet_naming_rule.public_members_must_be_capitalized.severity = suggestion

ルール ID: "IDE1006" (名前付け規則違反)Rule ID: "IDE1006" (Naming rule violation)

すべての名前付けオプションには、ルール ID IDE1006 とタイトルがあり Naming rule violation ます。All naming options have rule ID IDE1006 and title Naming rule violation. EditorConfig ファイルでは、次の構文を使用して、名前付け違反の重大度をグローバルに構成できます。You can configure the severity of naming violations globally in an EditorConfig file with the following syntax:

dotnet_diagnostic.IDE1006.severity = <severity value>

重大度値は、 warning error ビルドで適用される必要があります。The severity value must be warning or error to be enforced on build. 可能なすべての重要度の値については、「 重大度レベル」を参照してください。For all possible severity values, see severity level.

こちらもご覧くださいSee also