예제로 배우는 C# 프로그래밍
홈
C# 문법
C# 최신기능
C# 윈폼
코딩가이드
C# 데이타
C# 활용
C# 개발팁
C# 자료구조
C# 멀티쓰레딩
C# 권장도서
C# 웹프로그래밍
C# 네트워크
C# 알고리즘 퀴즈
C# 비트코인
개발자노트
C# 실수
C# 스토리
C# 초보캠프
C# 코딩 가이드
C#코딩 가이드
C#코딩: Bracing 스타일
C#코딩: 탭과 들여쓰기
C#코딩: 띄어쓰기
C#코딩: Name Casing
C#코딩: Naming 규칙
C#코딩: 접미어
C#코딩: Unmanaged
C#코딩: 코딩 스타일
C#코딩: 소스파일
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의 계층구조를 만들지 않는다.
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
"예제로 배우는" 시리즈
예제로 배우는 Python
예제로 배우는 GO 프로그래밍
예제로 배우는 SQL 프로그래밍
예제로 배우는 TypeScript
예제로 배우는 Rust
Crypto 스터디 (암호학/암호화폐)
유용한 외부 링크
C# Tips / 퀴즈
성태의 닷넷이야기
.NET 관련 블로그
WinDbg 디버깅 사이트
온라인 HTML 인코더
SQL 개발자를 위한 String Pad