이 네이밍 규칙은 닷넷 스파이더 팀에서 만든 [C# Coding Standards and Best Programming Practices]를 바탕으로 만들었습니다.
1. Namming Rule
이 문서 전반에 걸쳐 파스칼표기법과 카멜 표기법이 사용된다.
파스칼 표기법 - 모든 단어에서 첫번째 문자가 대문자이며 나머지는 소문자이다.
예: BackColor
카멜 표기법 - 최초에 사용된 단어를 제외한 첫번째 문자가 대문자이며 나머지는 소문자이다.
예: backColor
|
- 클래스 명에는 파스칼 표기법을 사용한다.
public class HelloWorld { ... }
|
- 함수(Method) 명에는 파스칼 표기법을 사용한다.
void SayHello(string name) { ... }
|
- 변수와 함수 파라미터에는 카멜표기법을 사용한다.
int totalCount = 0;
void SayHello(string name) { string fullMessage = "Hello " + name; ... }
|
- 인터페이스에는 접두사 "I"가 포함된 파스칼표기법에 따른다. ( Example: IEntity )
- 변수명에 헝가리안 표기법을 사용하지 않는다.
아래와 같은 방법은 사용하지 않는다.
string m_sName; int nAge; |
- 변수에 모든 의미를 충분히 담아라. 약어를 사용하지 말것.
좋은 예: string address int salary
나쁜 예: string nam string addr int sal |
- i, n, s 같이 한글자로 된 이름을 사용하지 말것. index, temp 같은 이름을 사용할 것. 아래의 경우에 한하여 허용할 수 있음
변수가 반복의 의미만 가지고 있고 for문이 10줄 내외인 경우
for (int i = 0; i < count; i++) { ... } |
- 지역변수에는 밑줄(_)을 사용하지 않는다.
- 모든 멤버 변수들은 앞에 밑줄(_)을 사용해야 한다. 그래야 다른 지역변수들과 구분할 수 있다.
- 키워드와 비슷한 이름을 하용하지 말것.
- boolean 이 들어가는 변수, 속성, 함수(method)등은 "is" 또는 "has"를 사용한다.
예: private bool _isFinished bool IsName(string name) { bool hasGood; ... }
|
- 네임스페이스 명은 사내에서 정한 표준 패턴을 따라야 한다. 표기법은 파스칼 표기법을 따른다.
<회사명>.<제품명>.<최상위모듈>...<하위모듈> namespace Innotive.ACG.Main
|
- UI 구성요소는 UI 컨트롤 이름 뒤에 의미가 있는 이름을 붙인다. 대소문자는 UI 구성요소가 제공하는 이름을 따른다.
예 : Button : ButtonConfirm Label : LabelName DataList : DataListOption
|
파일명은 클래스 명과 같아야 한다.
클래스 명이 "HelloWorld" 라면 파일명은 "HelloWorld.cs" 이어야 한다. UI Clase와 논리 Class를 구분하기 위해 폼을 가지고 있는 클래스는 Form을 붙여준다. Class : "FormMain" File : "FormMain.cs" |
클래스 명이 파스칼표기법을 따르므로 파일명도 같이 파스칼 표기법을 따른다.
컨트롤 선언시 이름 앞에 x를 항상 붙인다.
<Button x:Name="xMyButton" /> |
이벤트 선언시 이름 앞에 e를 항상 붙인다.
public event EventHandler<AlarmListControlFocusListChangedEventArgs> eFocused; |
2. 들여쓰기
- 들여쓰기에는 TAB 을 사용한다. SPACE를 사용하지 않는다. Tab 사이즈는 4로 정의한다.
- 주석은 코드와 같은 레벨에 있어야 한다.(들여쓰기의 레벨을 같이 사용한다)
좋은 예: // Format a message and display string fullMessage = "Hello " + name; DateTime currentTime = DateTime.Now; string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString(); MessageBox.Show(message );
좋지 않은 예: // Format a message and display string fullMessage = "Hello " + name; DateTime currentTime = DateTime.Now; string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString(); MessageBox.Show ( message );
|
- 중괄호는 중괄호 밖에 있는 코드와 같은 레벨에 있어야 한다.
- 논리적인 코드 그룹은 다른 코드와 한칸 띄어서 구분한다.
착한 예: bool SayHello(string name) { string fullMessage = "Hello " + name; DateTime currentTime = DateTime.Now;
string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();
MessageBox.Show (message);
if (...) { // Do something // ...
return false; }
return true; }
나쁜 예: bool SayHello(string name) { string fullMessage = "Hello " + name; DateTime currentTime = DateTime.Now; string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString(); MessageBox.Show (message); if (...) { // Do something // ... return false; } return true; }
|
- 클래스안에 함수 간에는 한칸씩 빈 라인을 집어 넣는다.
- 중괄호는 다른 라인과 분리되어 있어야하며 라인을 같이 쓰면 안된다.
착한 예: if ( ... ) { // Do something }
나쁜 예: if ( ... ) { // Do something }
|
- 지시자(operator)와 괄호 앞뒤로는 한 칸의 공간을 남긴다. "("와 ")"의 앞뒤로는 공간을 남기지 않는다.
착한 예: if (showResult == true) { for (int i = 0; i < 10; i++) { // } }
나쁜 예: if(showResult==true) { for(int i= 0;i<10;i++) { // } }
|
- 멤버변수는 파일의 최상단에 그 다음엔 property를 그리고 맨 뒤에 함수가 위치하도록 한다.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]