EditorConfig에 대한 .NET 코드 스타일 설정

가능한 값

options_name = false|true : none|suggestion|warning|error

코드 스타일 옵션에 대해 true(이 옵션 선호) 또는 false(이 옵션 선호 안 함), 콜론(:) 및 심각도(none, suggestion, warning 또는 error)를 지정해야 합니다. 심각도는 코드 베이스에서 원하는 스타일의 적용 수준을 의미합니다.

심각도 효과
없음 이 스타일을 따르지 않을 경우 사용자에게 아무 메시지도 표시되지 않지만 코드 생성 기능은 이 스타일로 생성됩니다.
suggestion 이 스타일을 따르지 않을 경우 사용자에게 제안으로 표시됩니다(처음 두 문자에 점선이 밑줄로 표시됨).
경고 이 스타일을 따르지 않을 경우 컴파일러 경고가 표시됩니다.
오류 이 스타일을 따르지 않을 경우 컴파일러 오류가 표시됩니다.

.NET 코드 스타일 옵션

"This." 및 "Me." 한정

필드

옵션 이름 dotnet_style_qualification_for_field
해당 언어 C# 및 Visual Basic
설명 적용됨
True 비정적 메서드에서 사용되는 모든 비정적 필드 앞에 this.(C#) 또는 Me.(Visual Basic)를 추가하는 것이 좋습니다. C#:
this.capacity = 0;

Visual Basic: Me.capacity = 0
False 비정적 메서드에서 사용되는 모든 비정적 필드 앞에 this.(C#) 또는 Me.(Visual Basic)를 추가하지 않는 것이 좋습니다. C#:
capacity = 0;

Visual Basic: capacity = 0

예제 editorconfig 파일:

# CSharp and VisualBasic code style settings:
[*.cs,*.vb]
dotnet_style_qualification_for_field = false:suggestion

속성

옵션 이름 dotnet_style_qualification_for_property
해당 언어 C# 및 Visual Basic
설명 적용됨
True 비정적 메서드에서 사용되는 모든 비정적 속성 앞에 this.(C#) 또는 Me.(Visual Basic)를 추가하는 것이 좋습니다. C#:
this.ID = 0;

Visual Basic: Me.ID = 0
False 비정적 메서드에서 사용되는 모든 비정적 속성 앞에 this.(C#) 또는 Me.(Visual Basic)를 추가하지 않는 것이 좋습니다. C#:
ID = 0;

Visual Basic: ID = 0

예제 editorconfig 파일:

# CSharp and VisualBasic code style settings:
[*.cs,*.vb]
dotnet_style_qualification_for_property = false:suggestion

메서드

옵션 이름 dotnet_style_qualification_for_method
해당 언어 C# 및 Visual Basic
설명 적용됨
True 비정적 메서드 내에서 호출되는 모든 비정적 메서드 앞에 this.(C#) 또는 Me.(VB)를 추가하는 것이 좋습니다. C#:
this.Display();

Visual Basic: Me.Display()
False 비정적 메서드 내에서 호출되는 모든 비정적 메서드 앞에 this.(C#) 또는 Me.(VB)를 추가하지 않는 것이 좋습니다. C#:
Display();

Visual Basic: Display()

예제 editorconfig 파일:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_qualification_for_method = false:suggestion

이벤트

옵션 이름 dotnet_style_qualification_for_event
해당 언어 C# 및 Visual Basic
설명 적용됨
True 비정적 메서드 내에서 참조되는 모든 비정적 이벤트 앞에 this.(C#) 또는 Me.(VB)를 추가하는 것이 좋습니다. C#:
this.Elapsed += Handler;

Visual Basic: AddHandler Me.Elapsed, AddressOf Handler
False 비정적 메서드 내에서 참조되는 모든 비정적 이벤트 앞에 this.(C#) 또는 Me.(VB)를 추가하지 않는 것이 좋습니다. C#:
Elapsed += Handler;

Visual Basic: AddHandler Elapsed, AddressOf Handler

예제 editorconfig 파일:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_qualification_for_event = false:suggestion

형식 참조를 위한 언어 키워드(int, string 등) 및 프레임워크 형식 이름

로컬 항목, 매개 변수 및 멤버

옵션 이름 dotnet_style_predefined_type_for_locals_parameters_members
해당 언어 C# 및 Visual Basic
설명 적용됨
True 로컬 항목, 매개 변수 및 형식 멤버의 경우 언어 키워드로 형식을 나타내는 형식(int, double, float, short, long, decimal, string)에서 형식 이름(Int32, Int64 등) 대신 키워드를 사용하는 것이 좋습니다. C#:
private int _member;

Visual Basic: Private _member As Integer
False 로컬 항목, 매개 변수 및 형식 멤버의 경우 언어 키워드로 형식을 나타내는 형식(int, double, float, short, long, decimal, string)에서 키워드 대신 형식 이름(Int32, Int64 등)을 사용하는 것이 좋습니다. C#:
private Int32 _member;

Visual Basic: Private _member As Int32

예제 editorconfig 파일:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion

멤버 액세스 식

옵션 이름 dotnet_style_predefined_type_for_member_access
해당 언어 C# 및 Visual Basic
설명 적용됨
True 멤버 액세스 식이 키워드 표현(int, double, float, short, long, decimal, string)과 함께 형식에 사용될 때마다 키워드를 사용하는 것이 좋습니다. C#:
var local = int.MaxValue;

Visual Basic: Dim local = Integer.MaxValue
False 멤버 액세스 식이 키워드 표현(int, double, float, short, long, decimal, string)과 함께 형식에 사용될 때마다 형식 이름을 사용하는 것이 좋습니다. C#:
var local = Int32.MaxValue;

Visual Basic: Dim local = Int32.MaxValue

예제 editorconfig 파일:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_predefined_type_for_member_access = true:suggestion

식 수준 기본 설정

개체 이니셜라이저

옵션 이름 dotnet_style_object_initializer
해당 언어 C# 및 Visual Basic
설명 적용됨
True 가능한 경우 개체 이니셜라이저를 사용하여 개체를 초기화하는 것이 좋습니다. C#:
var c = new Customer(){ Age = 21 };

Visual Basic: Dim c = New Customer() With { .Age = 21 }
False 개체 이니셜라이저를 사용하여 개체를 초기화하지 않는 것이 좋습니다. C#:
var c = new Customer();
c.Age = 21;

Visual Basic:
Dim c = new Customer()
c.Age = 21

예제 editorconfig 파일:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_object_initializer = true:suggestion

컬렉션 이니셜라이저

옵션 이름 dotnet_style_collection_initializer
해당 언어 C# 및 Visual Basic
설명 적용됨
True 가능한 경우 컬렉션 이니셜라이저를 사용하여 컬렉션을 초기화하는 것이 좋습니다. C#:
var list = new List<int>{ 1, 2, 3 };

Visual Basic:
Dim list = new List(Of Integer) From { 1, 2, 3}
False 컬렉션 이니셜라이저를 사용하여 컬렉션을 초기화하지 않는 것이 좋습니다. C#:
var list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);

Visual Basic:
Dim list = new List(Of Integer)
list.Add(1)
list.Add(2)
list.Add(3)

예제 editorconfig 파일:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_collection_initializer = true:suggestion

명시적 튜플 이름

옵션 이름 dotnet_style_explicit_tuple_names
해당 언어 C# 및 Visual Basic
설명 적용됨
True ItemX 속성보다 튜플 이름을 사용하는 것이 좋습니다. C#:
(string name, int age) customer = GetCustomer();
var name = customer.name;

Visual Basic:
Dim customer As (name As String, age As Integer) = GetCustomer()
Dim name = customer.name
False 튜플 이름보다 ItemX 속성을 사용하는 것이 좋습니다. C#:
(string name, int age) customer = GetCustomer();
var name = customer.Item1;

Visual Basic:
Dim customer As (name As String, age As Integer) = GetCustomer()
Dim name = customer.Item1

예제 editorconfig 파일:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_explicit_tuple_names = true:suggestion

"null" 검사에 식 병합

옵션 이름 dotnet_style_coalesce_expression
해당 언어 C# 및 Visual Basic
설명 적용됨
True 3개로 구성된 연산자 검사보다 null 병합 식을 사용하는 것이 좋습니다. C#:
var v = x ?? y;

Visual Basic:
Dim v = If(x, y)
False null 병합 식보다 3개로 구성된 연산자 검사를 사용하는 것이 좋습니다. C#:
var v = x != null ? x : y; // or
var v = x == null ? y : x;

Visual Basic:
Dim v = If(x Is Nothing, y, x) ' or
Dim v = If(x IsNot Nothing, x, y)

예제 editorconfig 파일:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_coalesce_expression = true:suggestion

"null" 검사의 Null 전파

옵션 이름 dotnet_style_null_propagation
해당 언어 C# 및 Visual Basic
설명 적용됨
True 가능한 경우 null 조건부 연산자를 사용하는 것이 좋습니다. C#:
var v = o?.ToString();

Visual Basic:
Dim v = o?.ToString()
False 가능한 경우 3개로 구성된 null 검사를 사용하는 것이 좋습니다. C#:
var v = o == null ? null : o.ToString(); // or
var v = o != null ? o.String() : null;

Visual Basic:
Dim v = If(o Is Nothing, Nothing, o.ToString()) ' or
Dim v = If(o IsNot Nothing, o.ToString(), Nothing)

예제 editorconfig 파일:

# CSharp and VisualBasic code style settings:
[*.cs, *.vb]
dotnet_style_null_propagation = true:suggestion

CSharp 코드 스타일 설정

"var"

기본 제공 형식에 "var" 사용

옵션 이름 csharp_style_var_for_built_in_types
해당 언어 C#
설명 적용됨
True int 등의 기본 제공 시스템 형식에 var을 사용하는 것이 좋습니다. C#:
var x = 5;
False int 등의 기본 제공 시스템 형식에 var을 사용하지 않는 것이 좋습니다. C#:
int x = 5;

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_var_for_built_in_types = true:suggestion

형식이 명확한 경우 "var" 사용

옵션 이름 csharp_style_var_when_type_is_apparent
해당 언어 C#
설명 적용됨
True 선언 식의 오른쪽에서 형식이 이미 언급된 경우 var을 사용하는 것이 좋습니다. C#:
var obj = new C();
False 선언 식의 오른쪽에서 형식이 이미 언급된 경우 var을 사용하지 않는 것이 좋습니다. C#:
C obj = new C();

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_var_when_type_is_apparent = true:suggestion

다른 곳에서 "var" 사용

옵션 이름 csharp_style_var_elsewhere
해당 언어 C#
설명 적용됨
True 다른 코드 스타일 규칙에 의해 재정의되지 않는 경우 항상 var을 사용하는 것이 좋습니다. C#:
var f = this.Init();
False 다른 코드 스타일 규칙에 의해 재정의되지 않는 경우 항상 var을 사용하지 않는 것이 좋습니다. C#:
bool f = this.Init();

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_var_elsewhere = true:suggestion

메서드

옵션 이름 csharp_style_expression_bodied_methods
해당 언어 C#
설명 적용됨
True 메서드에 식 본문 멤버를 사용하는 것이 좋습니다. C#:
public int GetAge() => this.Age;
False 메서드에 식 본문 멤버를 사용하지 않는 것이 좋습니다. C#:
public int GetAge() { return this.Age; }

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_methods = false:none

생성자

옵션 이름 csharp_style_expression_bodied_constructors
해당 언어 C#
설명 적용됨
True 생성자에 식 본문 멤버를 사용하는 것이 좋습니다. C#:
public Customer(int age) => Age = age;
False 생성자에 식 본문 멤버를 사용하지 않는 것이 좋습니다. C#:
public Customer(int age) { Age = age; }

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_constructors = false:none

연산자

옵션 이름 csharp_style_expression_bodied_operators
해당 언어 C#
설명 적용됨
True 연산자에 식 본문 멤버를 사용하는 것이 좋습니다. C#:
public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2)
=> new ComplexNumber(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary);
False 연산자에 식 본문 멤버를 사용하지 않는 것이 좋습니다. C#:
public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2)
{ return new ComplexNumber(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary); }

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_operators = false:none

속성

옵션 이름 csharp_style_expression_bodied_properties
해당 언어 C#
설명 적용됨
True 속성에 식 본문 멤버를 사용하는 것이 좋습니다. C#:
public int Age => _age;
False 속성에 식 본문 멤버를 사용하지 않는 것이 좋습니다. C#:
public int Age { get { return _age; }}

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_properties = false:none

인덱서

옵션 이름 csharp_style_expression_bodied_indexers
해당 언어 C#
설명 적용됨
True 인덱서에 식 본문 멤버를 사용하는 것이 좋습니다. C#:
public T this[int i] => _value[i];
False 인덱서에 식 본문 멤버를 사용하지 않는 것이 좋습니다. C#:
public T this[int i] { get { return _values[i]; } }

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_indexers = false:none

접근자

옵션 이름 csharp_style_expression_bodied_accessors
해당 언어 C#
설명 적용됨
True 접근자에 식 본문 멤버를 사용하는 것이 좋습니다. C#:
public int Age { get => _age; set => _age = value; }
False 접근자에 식 본문 멤버를 사용하지 않는 것이 좋습니다. C#:
public int Age { get { return _age; } set { _age = value; } }

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_expression_bodied_accessors = false:none

패턴 일치

"캐스트" 검사를 포함하는 "is"

옵션 이름 csharp_style_pattern_matching_over_is_with_cast_check
해당 언어 C#
설명 적용됨
True 캐스트를 포함하는 is 식보다 패턴 일치를 사용하는 것이 좋습니다. C#:
if (o is int i) {...}
False 패턴 일치보다 형식 캐스트를 포함하는 is 식을 사용하는 것이 좋습니다. C#:
if (o is int) {var i = (int)o; ... }

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion

"null" 검사를 포함하는 "as"

옵션 이름 csharp_style_pattern_matching_over_as_with_null_check
해당 언어 C#
설명 적용됨
True null 검사를 포함하는 as 식 대신 패턴 일치를 사용하여 항목이 특정 형식인지 확인하는 것이 좋습니다. C#:
if (o is string s) {...}
False 패턴 일치 대신 null 검사를 포함하는 as 식을 사용하여 항목이 특정 형식인지 확인하는 것이 좋습니다. C#:
var s = o as string; if (s != null) {...}

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion

인라인 변수 선언

옵션 이름 csharp_style_inlined_variable_declaration
해당 언어 C#
설명 적용됨
True 가능한 경우 out 변수를 인라인으로 선언하는 것이 좋습니다. C#:
if (int.TryParse(value, out int i) {...}
False 가능한 경우 out 변수를 명시적으로 선언하는 것이 좋습니다. C#:
int i; if (int.TryParse(value, out i) {...}

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_inlined_variable_declaration = true:suggestion

"Null" 검사 기본 설정

Throw 식

옵션 이름 csharp_style_throw_expression
해당 언어 C#
설명 적용됨
True throw 문 대신 throw 식을 사용하는 것이 좋습니다. C#:
this.s = ss ?? throw new ArgumentNullException(nameof(s));
False throw 식 대신 throw 문을 사용하는 것이 좋습니다. C#:
if (s==null) {throw new ArgumentNullException(nameof(s));} this.s = s;

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_throw_expression = true:suggestion

조건부 대리자 호출 선호

옵션 이름 csharp_style_conditional_delegate_call
해당 언어 C#
설명 적용됨
True null 검사를 수행하는 대신 람다 호출 시 조건부 병합 연산(?.)을 사용하는 것이 좋습니다. C#:
func?.Invoke(args);
False 조건부 병합 연산자(?.)를 사용하는 대신 람다 호출 시 null 검사를 수행하는 것이 좋습니다. C#:
if (func!=null) { func(args); }

예제 editorconfig 파일:

# CSharp code style settings:
[*.cs]
csharp_style_conditional_delegate_call = false:suggestion