C #에서 개인 변수에 가장 잘 사용되는 명명 규칙은 무엇입니까?
private int myInteger;
private int MyInteger;
private int mMyInteger;
private int _myInteger;
private int _MyInteger;
- 신비한 다른 옵션
어느 것을 사용하고 왜? (저희 회사는 C #을 처음 접했고 코딩 표준에 들어가기 위해 가장 "업계에서 인정 된"방법을 선택하고 싶습니다.)
C #에서 개인 변수에 가장 잘 사용되는 명명 규칙은 무엇입니까?
private int myInteger;
private int MyInteger;
private int mMyInteger;
private int _myInteger;
private int _MyInteger;
어느 것을 사용하고 왜? (저희 회사는 C #을 처음 접했고 코딩 표준에 들어가기 위해 가장 "업계에서 인정 된"방법을 선택하고 싶습니다.)
답변:
MSDN 클래스 디자인 지침 http://msdn.microsoft.com/en-us/library/ta31s3bc.aspx 는 옵션 1-myInteger를 권장합니다.
나는 항상이 스타일을 사용했습니다. 나는 _ 캐릭터를 개인적으로 싫어합니다.
myInteger
일치합니다 _myInteger
. 그러나 나는 MSDS가
myInteger
변수가 메소드 또는 개인 클래스 멤버의 로컬 변수 인지 어떻게 알 수 있습니까?
this.myInteger
;)
this
같은 이름을 가진 지역 변수가 존재하는 메소드에서만 매번 입력 할 필요는 없습니다 . 그러나 밑줄을 사용할 때마다 추가 기호를 작성해야합니다. 내가 동의하는 것은 지역 코드 스타일 계약을 고수하는 것이 항상 중요하다는 것입니다.
옵션 4가 실제로 가장 읽기 쉬운 옵션이라고 생각합니다. 이를 수행하는 데 도움이됩니다.
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
또한 모든 개인 구성원이 더 눈에 띄게 만듭니다. 다음 예에서 도대체 어디 age
에서 왔습니까? this
한정자가 없으면 말하기가 더 어렵습니다.
private void Method()
{
var x = 2;
var y = age + x;
}
이것은 이해하기 쉽습니다.
private void Method()
{
var x = 2;
var y = _age + x;
}
우선, PascalCasing은 일반적으로 클래스의 공용 속성, const, 메서드 등을 위해 예약되어 있습니다. 그래서 나는 2와 5를 건너 뛸 것입니다.
둘째, 헝가리어 표기법은 .NET 세계에서는 권장되지 않으므로 3은 옳습니다. 그것이 3으로 진행되고 있다고 가정합니다.
camelCasing과 _camelCasing이 남습니다. 나는 일반적으로 클래스 변수에 _camelCasing을 사용하고 메소드 범위 또는 더 좁은 범위의 변수에 대해서는 일반 오래된 camelCasing을 사용합니다. 낙타 케이싱은 분석법 인수, 보호 / 개인 변수 이름 및 분석법 또는 더 좁은 범위 내 변수에 사용되는 표준입니다.
또한 내 개인 변수가 내 지능으로 그룹화되도록 밑줄을 추가하고 싶습니다. 그러나 유형 범위의 변수에 대해서만이 작업을 수행합니다. 메소드 또는 더 좁은 범위 내에서 선언 된 변수는 밑줄을 생략합니다. 변수를 쉽게 분리하고 덜 사용 된 변수를 함께 유지할 수 있습니다.
I don't understand why you would use _camelCasing for class variables
you after : I'm talking about the difference between Color.ClassMethod() and myColor.InstanceMethod()
혼란스러워하는 동안 실례합니다. 나는 클래스 변수를 거의 사용하지 않으므로 _ 키를 누르고 지능적이고 멋지게 그룹화하여 이름을 상기시키는 것이 좋습니다.
밑줄로.
Bill Wagner는 Effective C #의 이유를 설명합니다 . 하지만 정수 이름을 절대 내 정수 , _age 또는 _length 같은 더 나은 뭔가. 인스턴스 이름에 TypeName을 포함시키는 것은 끔찍한 관행입니다. 이름은 설명이 필요하며 C #은 Type-Safe 형식이므로 항상 찾을 수 있습니다.
Juval Lowy의 IDesign C # 코딩 표준 은 매우 유명합니다. 이 표준에서는 개인용 멤버 변수 앞에 "m_"을 붙일 것을 권장합니다 (옵션 6). 그것이 우리 팀에서하는 일입니다.
private int m_myInteger;
옵션 4 ( _myInteger
)는이 표준의 수용 가능한 변형입니다.
MSDN 권장 사항 ( myInteger
)이 마음에 들지 않았습니다 . 로컬 변수에서 개인 구성원에게 알리기가 어렵 기 때문입니다. 물론 그들의 추천은 개인 멤버를로 자격을 부여함으로써이 문제를 해결합니다 this
.