C# Naming Convention

SweetDevPotato·2023년 1월 25일
0

출처
예제로 배우는 C# 프로그래밍 - C# 코딩: Naming Convention


명칭에 대한 규칙(Naming Convention)에 대해서는 .NET Framework Design Guidelines 에 자세히 정리되어 있으므로 이 책을 참조하면 좋다. 여기서는 그 중 중요한 사항들만을 요약 정리해 본다. 특히, Naming Convention에 대해 다른 프로그래밍 언어로 개발한 개발자들은 그 동안의 습관으로 인해 다른 의견을 가질 수 있다.

C#에서 Hungarian notation을 사용하지 않는다. Hungarian notation은 예전에 변수명 앞에 자료형을 나타내는 1~2 문자를 첨가했던 것인데, Intellisense의 도움의 그 의미가 많이 줄어 들었다. 변수명은 그 데이타 타입보다 변수가 담는 내용을 표현하는데 촛점을 맞춘다.
[Hungarian notation 예] bLive, szName, iVal //나쁜표현

멤버 필드에 대해 , m , s 같은 접두어(prefix)를 붙이지 않는다. (주: 개발팀에 따라 필드에 , m, s prefix를 권장하는 경우도 있다)

//나쁜표현
bool _success;
int m_Index;

클래스 멤버들을 명시적으로 표시하기 위하여 필드, 메서드, 속성, 이벤트 등의 멤버 앞에 this. 를 붙여 준다. 예를 들어, 필드명 name 대신 this.name 을 사용한다. 이는 클래스 멤버를 명시적으로 표현해 코드 가독성을 높일 수 있다. (주: 개발팀에 따라 this. 를 붙이지 않는 것을 권장하는 경우도 있다)
인터페이스명은 항상 I로 시작한다.

public interface IAlterable { }

Generics 클래스의 Generic 파라미터 타입은 가능하면 T와 같이 한 문자를 선택한다. (복수 타입 파라미터가 필요하면 예외)

public class MyList<TValue> //나쁜표현
public class MyList<T> //좋은표현

boolean 형의 변수/필드는 가능하면 is, has, can 등의 접두어를 붙여서 의미가 명료하게 한다.

bool bAlive //나쁜표현
bool isAlive //좋은표현

클래스명, enum명, 대리자(delegate)명에는 어떤 Prefix도 붙이지 않는다.

public enum EOrderType //나쁜 표현

클래스명, 메서드명, 속성명 등의 명칭에 축약된 단어를 사용하지 않는다.

public int GetWindow() //좋은 표현
public int GetWin() //나쁜 표현

꼭 필요하거나 널리 알려진 용어는 축약형을 사용할 수 있다. 예를 들어, UserInterface를 UI 로 축약하거나 Online Analytical Processing 을 Olap으로 축약할 수 있다.
축약형을 사용할 경우에는 2자까지는 모두 대문자로, 2자 초과인 경우는 Pascal Casing이나 Camel Casing을 사용한다.

HTMLButton //나쁜 표현
HtmlButton //좋은 표현

System.Io //나쁜 표현
System.IO //좋은 표현

메서드는 행위를 나타내므로 동사(verb)를 사용한다.

public int Addition(int a, int b) //나쁜 표현
public int Add(int a, int b) //좋은 표현

필드나 속성 혹은 로컬변수는 명사(noun)를 사용한다.

private bool createTable  //나쁜 표현
private bool newTable  //좋은 표현

이벤트는 가능하면 동사형으로 표현한다.

public event EventHandler Completion //나쁜 표현
public event EventHandler Completed  //좋은 표현

로컬변수는 가능하면 의미있는 단어를 선택한다.

int i, j //나쁜 표현
int startIndex, endIndex  //좋은 표현

조직의 계층구조를 본 따서 namespace의 계층구조를 만들지 않는다.

0개의 댓글