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.