중요 업데이트 (2016 년 4 월 12 일) :
.NET CoreFX 팀의 내부 표준에 주목했습니다. 이유에 대한 통찰력을 제공하지 않고 밑줄 표기법 을 . 우리가 규칙 # 3 자세히 보면 그러나 경우는의 시스템이 있다는 것을 분명하게 _, t_, s_왜 제안 접두사 _처음에 선택되었다.
- 우리는 사용
_camelCase 내부 및 개인 필드 어디 읽기 전용 가능한 사용합니다. 접두사 인스턴스와 필드 _, 정적 필드 s_와와 스레드 정적 필드 t_. 정적 필드를 사용하는 경우, readonly이후에 와야한다 static(즉, static readonly하지 readonly static).
this.반드시 필요한 경우가 아니면 피 합니다.
따라서 .NET CoreFX 팀이 성능에 중점을 둔 다중 스레드 시스템 수준 코드를 작업하는 것과 마찬가지로 다음과 같이 강력하게 제안됩니다.
- 코딩 표준을 준수하고
- 밑줄 표기법을 사용하고
- 이 답변을 더 이상 읽지 마십시오
그렇지 않으면 계속 읽으십시오 ...
최초의 답변 :
먼저 우리가 말하는 것에 동의합시다. 가시성 수정자가 허용하는 경우 비 정적 메서드 및 클래스 / 하위 클래스의 생성자 내에서 인스턴스 멤버에 액세스하는 방법이 문제입니다.
밑줄 표기
- 개인 필드 이름에 "_"접두사를 사용하는 것이 좋습니다.
- 또한 꼭 필요한 경우가 아니면 "this"를 사용해서는 안된다고합니다.
이 표기법
- 항상 "this"를 사용하도록 제안합니다. 모든 인스턴스 멤버에 액세스
이 표기법이 존재하는 이유는 무엇입니까?
이것은 당신이 방법이기 때문에
- 동일한 이름을 공유 할 때 필드에서 매개 변수를 구분
- 현재 인스턴스의 컨텍스트에서 작업하고 있는지 확인하십시오.
예
public class Demo
{
private String name;
public Demo(String name) {
this.name = name;
}
}
밑줄 표기법이 존재하는 이유는 무엇입니까?
어떤 사람들은 "this"를 입력하는 것을 좋아하지 않지만 여전히 필드와 매개 변수를 구별하는 방법이 필요하기 때문에 필드 앞에 "_"를 사용하기로 동의했습니다.
예
public class Demo
{
private String _name;
public Demo(String name) {
_name = name;
}
}
개인 취향의 문제라고 생각할 수 있으며 두 가지 방법 모두 똑같이 좋고 나쁩니다. 그러나이 표기법이 밑줄 표기법을 능가하는 특정 측면이 있습니다.
명쾌함
- 밑줄 표기 혼란 이름
- 이 표기법은 이름을 그대로 유지합니다
인지 하중
업데이트 : 다음과 같이 지적했듯이 이점은 아닙니다.
유지
자동 완성
인스턴스 멤버 목록을 확인해야하는 경우 :
- 밑줄 표기법은 큰 도움이되지 않습니다. "_"를 입력하면 자동 완성 팝업에 비공개 필드와 연결된 어셈블리에서 사용 가능한 모든 유형이 나머지 인스턴스 멤버와 혼합되어 표시되므로
- 이 표기법은 "this"를 입력하여 명확한 답변을 제공합니다. 회원 목록 만 있으면됩니다.
모호
때로는 Intellisense의 도움없이 코드를 처리해야합니다. 예를 들어 코드 검토를 수행하거나 온라인에서 소스 코드를 찾아 볼 때.
밑줄 표기법은 모호합니다. Something.SomethingElse를 볼 때 Something이 클래스인지 SomethingElse가 정적 속성인지 여부를 알 수 없거나 SomethingElse의 고유 속성이있는 현재 인스턴스 속성 일 수 있습니다.
this-notation is clear : Something.SomethingElse를 볼 때 정적 속성을 가진 클래스를 의미 할 수 있고 이것을 볼 때만 뭔가를 볼 수 있습니다. Something.SomethingElse Something은 멤버이고 SomethingElse는 그 속성
확장 방법
"this"를 사용하지 않으면 인스턴스 자체에서 확장 메소드를 사용할 수 없습니다.
- 밑줄 표기법을 사용하려면 "this"를 사용하지 않아도되지만 확장 방법에는
- 이 표기법은 주저를 피하고 항상 "this"기간을 사용합니다.
Visual Studio 지원
공식 추천
특히 C #에서 "밑줄을 사용하지 마십시오"라는 공식 지침이 많이 있습니다.