일반적으로 형식 이름은 명사구여야 하며, 여기서 명사는 형식으로 표시되는 엔터티입니다. 예를 들어, Button, Stack 및 File의 이름은 각각 형식으로 표시되는 엔터티를 식별합니다. 개발자의 관점에서 엔터티를 식별하는 이름을 선택합니다. 이름은 사용 시나리오를 반영해야 합니다.
다음 지침은 형식 이름을 선택하는 데 적용됩니다.
파스칼식 대/소문자를 사용하여 명사, 명사구 또는 경우에 따라 형용사구로 클래스, 인터페이스 및 값 형식의 이름을 지정합니다.
클래스 이름에 문자 C와 같은 접두사를 사용하지 않습니다.
문자 I로 시작해야 인터페이스는 이 규칙의 예외입니다.
파생 클래스의 이름은 기본 클래스의 이름으로 끝날 수 있습니다.
예를 들어, Stream에서 상속되는 Framework 형식은 Stream으로 끝나고 Exception에서 상속되는 형식은 Exception으로 끝납니다.
인터페이스 이름에는 문자 I를 접두사로 사용하여 해당 형식이 인터페이스임을 나타냅니다.
클래스가 인터페이스의 표준 구현인 클래스/인터페이스 쌍을 정의하는 경우 해당 이름이 인터페이스 이름의 접두사 문자 I만 다른지 확인합니다.
예를 들어, Framework는 IAsyncResult 인터페이스와 AsyncResult 클래스를 제공합니다.
제네릭 형식 매개 변수의 이름
제네릭은 .NET Framework 버전 2.0의 중요한 새 기능입니다. 다음 지침은 제네릭 형식 매개 변수의 올바른 이름을 선택하는 방법에 대한 것입니다.
단일 문자 이름만으로 완전히 설명할 수 없고 설명이 포함된 이름이 값을 추가하는 경우 설명이 포함된 이름으로 제네릭 형식 매개 변수의 이름을 지정합니다.
IDictionary<TKey, TValue>는 이 지침을 따르는 인터페이스의 예입니다.
하나의 단일 문자 형식 매개 변수를 사용하는 형식에 대한 형식 매개 변수 이름으로 문자 T를 사용할 수 있습니다.
설명이 포함된 형식 매개 변수 이름에 문자 T를 접두사로 지정합니다.
형식 매개 변수에 지정된 제약 조건을 매개 변수 이름에 나타낼 수 있습니다. 예를 들어, ISession으로 제한된 매개 변수를 TSession이라고 할 수 있습니다.
공용 형식의 이름
다음 지침은 개발자가 특정 클래스에 대한 해당 사용 시나리오를 이해하는 데 유용한 명명 규칙을 제공합니다. 해당 지침이 다른 형식에서 상속되는 형식을 참조하는 경우 직접 상속하는 형식은 물론 모든 상속자에 해당 지침이 적용됩니다. 예를 들어, 지침 "접미사를 추가 하려면 Exception 에서 상속 하는 형식에 Exception." 즉 어떤 유형에 Exception 해당 상속 계층 구조에서 끝나는 이름이 있어야 Exception.
이러한 각 지침은 또한 지정한 접미사를 예약합니다. 따라서 해당 형식이 지침에서 설정한 기준을 충족하지 않는 경우 해당 접미사를 사용해서는 안 됩니다. 예를 들어, 해당 형식이 Exception에서 직접 또는 간접적으로 상속되지 않는 경우 해당 이름은 Exception으로 끝나지 않아도 됩니다.
사용자 지정 특성 클래스에는 접미사 Attribute를 추가합니다.
ObsoleteAttribute 및 AttributeUsageAttribute는 이 지침을 따르는 형식 이름입니다.
C# 이벤트의 반환 형식과 같이 이벤트에서 사용되는 형식의 이름에는 접미사 EventHandler를 추가합니다.
AssemblyLoadEventHandler는 이 지침을 따르는 대리자 이름입니다.
이벤트 처리기가 아닌 대리자의 이름에는 접미사 Callback을 추가합니다.
대리자에는 접미사 Delegate를 추가하지 않습니다.
System.EventArgs를 확장하는 클래스에는 접미사 EventArgs를 추가합니다.
System.Enum 클래스에서 파생해서는 안 됩니다. 대신 사용자 언어에서 지원하는 키워드를 사용합니다. 예를 들어, C#에서는 enum 키워드를 사용합니다.
System.Exception에서 상속되는 형식에는 접미사 Exception을 추가합니다.
System.Collections.IDictionary 또는 System.Collections.Generic.IDictionary<TKey, TValue>를 구현하는 형식에는 접미사 Dictionary를 추가합니다. System.Collections.IDictionary는 특정 형식의 컬렉션이지만 이 지침은 다음과 같은 보다 일반적인 컬렉션 지침에 우선합니다.
System.Collections.IEnumerable, System.Collections.ICollection, System.Collections.IList, System.Collections.Generic.IEnumerable<T>, System.Collections.Generic.ICollection<T> 또는 System.Collections.Generic.IList<T>를 구현하는 형식에는 접미사 Collection을 추가합니다.
System.IO.Stream에서 상속되는 형식에는 접미사 Stream을 추가합니다.
System.Security.CodeAccessPermission에서 상속되거나 System.Security.IPermission을 구현하는 형식에는 접미사 Permission을 추가합니다.
열거형의 이름
열거형 값 이름에는 접두사를 사용하지 않습니다. 예를 들어, ADO 열거형에 대한 ad 또는 서식 있는 텍스트 열거형에 대한 rtf와 같은 접두사를 사용하지 않습니다.
이는 또한 열거형 값 이름에 열거형 형식 이름을 포함해서는 안 됨을 의미합니다. 다음 코드 예제에서는 열거형 값의 이름을 잘못 지정한 예를 보여 줍니다.
Public Enum Teams
TeamsAlpha
TeamsBeta
TeamsDelta
End Enum
public enum Teams
{
TeamsAlpha,
TeamsBeta,
TeamsDelta
}
열거형 형식에 대한 접미사로 Enum을 사용하지 않습니다.
플래그 열거형의 이름에 대한 접미사로 Flags를 추가하지 않습니다.
해당 값이 비트 필드가 아닌 경우 열거형에는 단수형 이름을 사용합니다.
플래그 열거형이라고도 하며 해당 값이 비트 필드인 열거형에는 복수형 이름을 사용합니다.
Portions Copyright 2005 Microsoft Corporation. All rights reserved.
Portions Copyright Addison-Wesley Corporation. All rights reserved.
디자인 지침에 자세한 내용은 참조를 "Framework 디자인 지침: 규칙, 숙어, 및 재사용에 대 한 패턴입니다.NET 라이브러리"도 서 Krzysztof Cwalina와 Brad Abrams, 게시 Addison-wesley, 2005.