private 멤버 네이밍 컨벤션 질문

C#에서 private 멤버의 이름을 지을 때 어떻게 짓고 계신가요?

처음엔 _ + 카멜 케이싱 으로 하다가

깃 코파일러 같은 자동 완성이 종종? 대부분? 카멜 케이싱으로 표시 될 때가 있어
추후 프로젝트부터는 언더 바를 빼야겠다는 생각을 하고 있는데…

혹시 주로 어떻게 짓고 계신가요?

그리고 private const 형 변수의 이름도 카멜로 하는지 파스칼로 하시는지 궁금합니다.

C#에서 private 멤버의 이름

_ + 카멜 케이싱

으로 합니다. 지역 변수(카멜 케이싱)와 구별하기 위해서.

private const 형 변수의 이름은 대개 대문자와 '_'로 연결합니다. c의 const 흉내내서.

1 Like

저도 leechw9님 동일하게 사용중입니다.

2 Likes

저는 아래 가이드 라인을 준수합니다.

1 Like

private 필드는 높은 확률로 지역 변수 이름이나 메서드 매개 변수 이름과 겹칠 수 있고, 이 때 실수가 많이 발생합니다.

private int x;
private int _y;

public Point(int x, int y)
{
    x = x; // 실수 가능성
    this.x = x; // this 사용 지양
    _y = y;
}

이러한 오류를 미연에 방지하고, 코드 전반에 this 키워드를 사용하지 않도록 하기 위해 _를 붙이고 있습니다.

private const 필드의 경우 컴파일 시 변수 명이 실제 값으로 치환된다는 관점(개인적)에서 _로 분리된 전체 대문자를 사용합니다.

private const double SPEED_OF_LIGHT = 299792458; 

이외의 경우는 일반 규칙에 따라 static readonly 속성으로 노출 될 경우 파스칼 케이스를, static readonly 필드는 카멜 케이스를 사용합니다.

public static double SpeedOfLight { get; } = 299792458; // readonly

private static readonly double _speedOfLight = 299792458; 
2 Likes

저도 이쪽입니다.
처음엔 좀 혼용했었는데,
resharper 기본 사양이기도 하고… 그냥 거기 적응하니 편하길래 ㅎㅎ

1 Like

private 멤버와 public property를 연결할 때에도 같은 이름에 "_"가 있는지로 구분할 수 있고 찾기 쉬워 private 멤버는 "_"를 붙인 카멜 케이스를 사용합니다.

private string _Content = string.empty;
public string Content
{
    get { return _Content; }
    set { _Content = value; }
}