C# 코딩: Name Casing
클래스명, 변수명, 메서드명 등과 같은 명칭을 어떤 대소문자 형식으로 표현하는가는 일관된 코드를 유지하는데 중요하다.
아래 표는 프로그래밍에서 일반적으로 사용하는 몇 가지 Casing을 요약한 것이다.
또한, C#의 각 Identifier 명칭마다 어떤 Casing을 사용하는 것이 좋은지를 설명한다.
흔히 사용되는 Casing (Identifier 명칭을 대소문자로 어떻게 표현하는가)
Casing | 내용 | 예제 |
Camel Case | 첫 문자는 소문자이고 계속되는 다음 단어의 첫문자는 대문자로 한다. C#에서 변수명이나 필드명에 사용된다. | startIndex |
Pascal Case | 첫 문자와 계속되는 다음 단어의 첫문자를 모두 대문자로 한다. C#에서 클래스, 메서드명, 속성명 등에 사용된다. | StartIndex |
Snake Case | 단어(word) 사이를 공백없이 밑줄로 연결한다. C#에서 사용하지 않는다. | start_index 혹은 Start_Index |
Screaming Snake Case | 단어(word) 사이를 공백없이 밑줄로 연결하고, 모두 대문자로 한다. C#에서 권장되진 않지만, 상수에 쓰는 경우도 있다. | START_INDEX |
C#에서의 Casing Convention
-
클래스명, 메서드명, 속성명, 이벤트명은 Pascal Case를 사용한다.
-
상수가 아닌 필드명은 Camel Case를 사용한다.
-
메서드 파라미터는 Camel Case를 사용한다.
-
로컬 변수명은 Camel Case를 사용한다.
-
public 상수(public const)와 public 읽기전용 정적 변수(public static readonly)는 Pascal Case를 사용한다.
-
Enum Value 즉 Enum element는 Pascal Case를 사용한다.
C# 코딩: 복합어(Compound Word)
영어의 복합어를 구분할 때, (1) 두 단어가 마치 하나인 것처럼 묶어서 쓰이는 Closed Form (예: endpoint),
(2) 두 단어를 하이폰으로 연결하는 Hyphenated Form (예: single-minded), (3) 공백을 중간에 두는 Open Form (예: distance learning)
등으로 나눌 수 있다.
C#에서 Closed Form 복합어인 경우, 각각의 Word를 대문자로 쓰지 않고, 마치 하나의 Word인 것처럼 취급한다.
예를 들어, endpoint는 Closed Form 이므로, EndPoint 로 쓰지 않고, 그냥 endpoint 혹은 Endpoint 로 사용한다.
즉, 변수명과 같은 camel case인 경우 endpoint를 사용하고, 속성명과 같은 pascal case인 경우 Endpoint를 사용한다.
Closed Form 이외에 대해서는 각각의 Word를 대문자로 표현한다.
다음은 흔히 사용되는 단어들에 대해 어떻게 표현하는지를 정리한 표이다.
(출처: Framework Design Guidelines)
Pascal (클래스명, 속성명 등) | Camel (변수명 등) | 나쁜 표현 |
BitFlag | bitFlag | Bitflag |
Callback | callback | CallBack |
Canceled | canceled | Cancelled |
DoNot | doNot | Dont |
Email | email | EMail |
Endpoint | endpoint | EndPoint |
FileName | fileName | Filename |
Gridline | gridline | GridLine |
Hashtable | hashtable | HashTable |
Id | id | ID |
Indexes | indexes | Indices |
LogOff | logOff | LogOut |
LogOn | logOn | LogIn |
Metadata | metadata | MetaData, metaData |
Multipanel | multipanel | MultiPanel |
Namespace | namespace | NameSpace |
Ok | ok | OK |
Pi | pi | PI |
Placeholder | placeholder | PlaceHolder |
SignIn | signIn | SignOn |
SignOut | signOut | SignOff |
UserName | userName | Username |
WhiteSpace | whiteSpace | Whitespace |
Writable | writable | Writeable |
본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.