C # 보호 필드에 대한 대문자 표기 규칙


17

C #의 보호 된 필드 이름에 대한 대문자 표기 규칙은 무엇입니까?

_myVar (예 : 개인 필드) 또는 MyVar (예 : 속성)입니까?


3
필드를 보호 하시겠습니까? 공개 필드가없는 대부분의 이유는 보호 필드에도 적용되므로 보호 속성을 대신 사용하는 것이 좋습니다.
svick

테스트 사례에서는 일반적으로 보호 필드를 사용하는 것이 편리합니다. 그러나 아마도 당신이 맞을 수도 있습니다. 그러나 보호 된 필드를 원한다면 명명 규칙은 무엇입니까?
루이스리스

2
_myVar가 개인 필드에 대한 올바른 규칙인지 확실합니까? (당신은 그것이 전제라는 것을 전제로하고 있습니다.) 여기서 종교적 전쟁을 시작하려고하지 않고, 사유지에 대한 임의의 규칙을 선택했다면 보호 된 분야에 대해 다른 규칙을 선택할 수 있다고 말하려고합니다. 유일한 조언은 일관성을 유지하는 것입니다.
Marek

답변:


13

Microsoft에서 작성한 클래스 라이브러리 개발을위한 디자인 지침 이라고 하는 것이 있습니다.

다음과 같이 말합니다.

공개 또는 보호 된 인스턴스 필드를 제공하지 마십시오.

공개 및 보호 필드는 버전이 좋지 않으며 코드 액세스 보안 요구에 의해 보호되지 않습니다. 공개적으로 보이는 필드를 사용하는 대신 개인 필드를 사용하여 속성을 통해 노출하십시오.

만큼 잘:

  • 필드 이름에 파스칼 케이싱을 사용하십시오

  • 필드 이름에 접두사를 사용하지 마십시오. 예를 들어, 정적 필드와 비 정적 필드를 구별하기 위해 g_ 또는 s_를 사용하지 마십시오.

_접두사에 관해서는 , 그것은 this.규칙 처럼 자주 사용됩니다 (CodePlex / GitHub에서 소스 코드를 탐색하는 한). 예를 들어 ReSharper _는 이름 확인을 촉진 합니다.


"필드 이름에 접두사를 사용하지 마십시오."를 포함하지 않는 것이 조금 선택적입니다. 파스칼 케이싱 규칙과 함께 MSDN에서 :) 기본적으로 resharper가 _ 접두사를 홍보하는 것이 사실이지만 MSDN 규칙 IMHO를 인용하는 경우 자신의 인상과 혼합해서는 안됩니다.
Marek

2
"버전이 좋지 않다"는 것은 무엇을 의미합니까? 보호 된 필드는 권장되지 않으므로 이름에 대한 지침이 없다고 말씀하십니까? 어쨌든, Resharper는 권장하는 것 같습니다MyVar
Louis Rhys

2
@Marek : 나는 내 취향을 포함시켰다. 나는 단순히 Resharper가 선호하는 것을 언급했습니다. 그리고 선택적인 의도는 아니 었습니다. 답변이 업데이트 됨
jgauffin

1
@jgauffin 코드에 대해 리플렉션을 사용하는 소비자 외에도 필드를 발신자에게 투명한 속성으로 변경하지 않습니까? 보호 된 필드를 동일한 이름의 보호 된 속성으로 변경하면 호환성이 어떻게 저하됩니까?
Quantic

1
이진 호환성을
깨뜨립니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.