MSDN C# 명명지침

MSDN 명명지침

참조

대문자 표기 규칙

  • 식별자에서 단어를 구별하려면 식별자에서 각 단어의 첫 글자를 대문자 로 표시합니다.
  • 단어를 구별하기 위해 밑줄(_)을 사용하지 않습니다.
  • 식별자 사용에 따라 식별자를 대문자로 표시하는 두 가지 적절한 방법이 있습니다.
    • PascalCasing : 각 단어의 첫 번째 문자를 대문자로 표시합니다.
    • CamelCasing : 첫 번째 단어를 제외한 각 단어의 첫 문자를 대문자로 표시합니다.

일반 명명 규칙

단어 선택

  • ✔️ 쉽게 읽을 수 있는 식별자 이름을 선택합니다. (ex, HorizontalAlignment, AlignmentHorizontal)
  • ✔️ 간결성보다 가독성을 선호합니다. (ex, CanScrollHorizontally)
  • ❌ 밑줄, 하이픈 또는 기타 영숫자가 아닌 문자를 사용하지 않습니다.
  • ❌ 헝가리 표기법을 사용하지 않습니다.
  • ❌ 널리 사용되는 프로그래밍 언어의 키워드와 충돌하는 식별자를 사용하지 않습니다.

Using Abbreviations and Acronyms

  • ❌ 식별자 이름의 일부로 약어 나 축약을 사용하지 않습니다.
  • ❌ 널리 사용되지 않는 문자는 사용하지 않습니다. 필요한 경우에만 사용합니다.

Avoiding Language-Specific Names

  • ✔️ 유형 이름에 대해 언어 별 키워드보다 의미 상 좋은 이름을 사용합니다.
  • ✔️ 드물게 식별자에 해당 유형 이상의 의미론적 의미가 없는 경우 언어 별 이름이 아닌 일반 CLR 유형 이름을 사용합니다.
    • 예를 들어 Int64로 변환하는 메서드의 이름은 ToLong이 아니라 ToInt64 여야합니다 (Int64는 C # 관련 별칭 long의 CLR 이름이기 때문).

기존 API의 새 버전 이름 지정

  • ✔️ 기존 API의 새 버전을 만들 때 이전 API와 유사한 이름을 사용합니다.
  • ✔️ 기존 API의 새 버전을 나타 내기 위해 접두사보다는 접미사를 추가하는 것을 권장합니다.
  • ✔️ 접미사 또는 접두사를 추가하는 대신 새롭지 만 의미있는 식별자를 사용하는 것을 권장합니다.
  • ✔️ 기존 API의 새 버전을 나타 내기 위해 숫자 접미사를 사용합니다. 특히 API의 기존 이름이 의미가있는 유일한 이름 인 경우 (즉, 업계 표준 인 경우) 그리고 의미있는 접미사를 추가 (또는 변경하는 경우) 이름)은 적절한 옵션이 아닙니다.
  • ❌ 동일한 API의 이전 버전과 구별하기 위해 식별자에 "Ex"(또는 유사한) 접미사를 사용하지 않습니다.

어셈블리 및 DLL

  • 어셈블리는 관리 코드 프로그램의 배포 및 ID 단위입니다.
  • 어셈블리는 하나 이상의 파일에 걸쳐 있을 수 있지만 일반적으로 어셈블리는 DLL과 1 : 1로 매핑됩니다.
  • 따라서 이 섹션에서는 어셈블리 명명 규칙에 매핑 할 수 있는 DLL 명명 규칙만 설명합니다.
    • ✔️ System.Data와 같은 많은 기능을 제안하는 어셈블리 DLL의 이름을 선택합니다.
      • MyCompany.MyTechnology.FirstFeature
      • MyCompany.MyTechnology.SecondFeature
      • MyCompany.MyTechnology.dll
    • ✔️ 다음 패턴에 따라 DLL 이름 지정을 고려합니다.
      • ..dll
      • Mirero.Controls.dll

네임 스페이스 이름

  • 다른 명명 지침과 마찬가지로 네임 스페이스 명명의 목표는 프레임 워크를 사용하는 프로그래머가 네임 스페이스의 내용이 무엇인지 즉시 알 수 있도록 충반한 명확성을 보여야 합니다.
    • .(|)[.][.]
    • Fabrikam.Math Litware.Security
  • ✔️ 다른 회사의 네임 스페이스가 동일한 이름을 사용하지 못하도록 네임 스페이스 이름에 회사 이름을 접두사로 붙입니다.
  • ✔️ 네임 스페이스 이름의 두 번째 수준에서 안정적이고 버전에 독립적 인 제품 이름을 사용합니다.
  • ❌ 기업 내의 그룹 이름은 수명이 짧은 경향이 있으므로 네임 스페이스 계층 구조의 이름에 대한 기반으로 조직 계층을 사용하지 않습니다. 관련 기술 그룹을 중심으로 네임 스페이스 계층 구조를 구성합니다.
  • ✔️ PascalCasing을 사용하고 마침표 (예 :)로 네임 스페이스 구성 요소를 구분하십시오 Microsoft.Office.PowerPoint. 브랜드에서 비 전통적인 대소 문자를 사용하는 경우 브랜드가 정의한 대소 문자를 따라야합니다. 일반 네임 스페이스 대소 문자를 벗어난 경우에도 마찬가지입니다.
  • ❌ 네임 스페이스에 동일한 이름과 해당 네임 스페이스의 유형을 사용하지 않습니다.

클래스, 구조체 및 인터페이스 이름

  • ✔️ PascalCasing을 사용하여 명사 또는 명사 구문으로 클래스 및 구조체 이름을 지정합니다.
  • ✔️ DO 이름은 인터페이스와 함께 형용사 구 또는 명사, 명사구로 사용됩니다.
  • ❌ 클래스 이름에 접두사 (예 : "C")를 제공하지 않습니다.
  • ✔️ 파생 클래스의 이름을 기본 클래스의 이름으로 끝내는 것을 권장합니다.
  • ✔️ DO 접두사 인터페이스 이름에 문자 I를 사용하여 유형이 인터페이스임을 나타냅니다.
  • ✔️ 클래스가 인터페이스의 표준 구현 인 클래스-인터페이스 쌍을 정의 할 때 인터페이스 이름의 "I" 접두사로만 이름을 지정하는지 확인합니다.

형식 멤버 이름

메서드 이름

  • 메서드는 동사 또는 동사구 여야 합니다.
public class String {
    public int CompareTo(...);
    public string[] Split(...);
    public string Trim();
}

속성 이름

  • 다른 멤버와 달리 속성에는 명사구 또는 형용사 이름이 지정되어야 합니다.
  • ✔️ 명사, 명사 구 또는 형용사를 사용하여 속성 이름을 지정합니다.
  • ❌ 다음 예제에서와 같이 "Get"메서드의 이름과 일치하는 속성이 없습니다.
    • public string TextWriter { get {...} set {...} } public string GetTextWriter(int value) { ... }
  • ✔️ "목록" 또는 "컬렉션" 이 뒤 따르는 단수 구문을 사용하는 대신 컬렉션의 항목을 설명하는 복수 구문으로 컬렉션 속성 이름을 지정합니다.
  • ✔️ 긍정 문구 ( CantSeek대신 CanSeek)로 bool 속성의 이름을 지정 합니다. 선택적으로 bool 속성에 "Is", "Can"또는 "Has"를 접두사로 붙일 수도 있지만 값을 추가하는 위치 만 가능합니다.
  • ✔️ 속성에 유형과 동일한 이름을 지정하는 것을 고려하십시오.
public enum Color {...}
public class Control {
    public Color Color { get {...} set {...} }
}

이벤트 이름

  • ✔️ 동사 또는 동사 구문으로 이벤트 이름을 지정합니다.
    • Clicked, Painting, DroppedDown
  • ✔️ 현재 및 과거 시제를 사용하여 전후 개념으로 이벤트 이름을 지정합니다.
    • Closing, Closed
  • ❌ 사전 및 사후 이벤트를 나타 내기 위해 "이전" 또는 "이후" 접두사 또는 접두사를 사용하지 않습니다. 위에서 설명한대로 현재 및 과거 시제를 사용합니다.
  • ✔️ 다음 예제와 같이 "EventHandler" 접미사를 사용하여 이벤트 처리기 (이벤트 유형으로 사용되는 대리인)의 이름을 지정합니다.
    • public delegate void ClickedEventHandler(object sender, ClickedEventArgs e);
  • ✔️ "EventArgs" 접미사를 사용하여 이벤트 인수 클래스의 이름을 지정합니다.

필드 이름

  • ✔️ 필드 이름에 PascalCasing을 사용합니다.
  • ✔️ 명사, 명사 구 또는 형용사를 사용하여 필드 이름을 지정합니다.
  • ❌ 필드 이름에 접두사를 사용하지 않습니다.
    • "g_" , "s_" 를 사용하여 정적 필드를 나타내지 않습니다.

Naming Parameters

  • ✔️ 매개 변수 이름에 camelCasing을 사용합니다.
  • ✔️ 설명 매개 변수 이름을 사용합니다.
  • ✔️ 매개 변수의 유형보다는 매개 변수의 의미에 따라 이름을 사용하는 것을 권장합니다.

명명 리소스

  • 지역화 가능한 리소스는 마치 속성인 것처럼 특정 개체를 통해 참조 될 수 있으므로 리소스의 이름 지정 지침은 속성 지침과 유사합니다.
  • ✔️ 리소스 키에서 PascalCasing을 사용합니다.
  • ✔️ 짧은 식별자가 아닌 설명적인 식별자를 제공합니다.
  • ❌ 기본 CLR 언어의 언어 별 키워드를 사용하지 않습니다.
  • ✔️ 리소스 이름 지정에는 영숫자 문자와 밑줄 만 사용합니다.
  • ✔️ 예외 메시지 리소스에 대해 다음 명명 규칙을 사용합니다.
    • 리소스 식별자는 예외 유형 이름과 예외의 짧은 식별자 여야합니다.
    • ArgumentExceptionIllegalCharacters ArgumentExceptionInvalidName ArgumentExceptionFileNameIsMalformed
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY