클래스, 구조체 및 인터페이스의 이름Names of Classes, Structs, and Interfaces

명명 지침을 따르는 일반 형식 이름에 적용 됩니다.The naming guidelines that follow apply to general type naming.

✓ DO 명사 또는 명사구를 PascalCasing를 사용 하 여으로 클래스 및 구조체 이름을 지정 합니다.✓ DO name classes and structs with nouns or noun phrases, using PascalCasing.

이 메서드의 동사구를 사용 하 여 명명 된 형식 이름을 구분 합니다.This distinguishes type names from methods, which are named with verb phrases.

✓ DO 형용사 구 또는 경우에 따라 명사 또는 명사구 인터페이스 이름을 지정 합니다.✓ DO name interfaces with adjective phrases, or occasionally with nouns or noun phrases.

명사 및 명사구를 거의 사용 해야 하며 형식을 추상 클래스와 인터페이스 하지 되어야 함을 나타낼 수 있습니다.Nouns and noun phrases should be used rarely and they might indicate that the type should be an abstract class, and not an interface.

X DO NOT 클래스 이름 (예: "C")는 접두사를 제공 합니다.X DO NOT give class names a prefix (e.g., "C").

✓ CONSIDER 기본 클래스의 이름으로 클래스를 파생 종료 이름입니다.✓ CONSIDER ending the name of derived classes with the name of the base class.

이 매우 읽기가 가능 하며 명확 하 게 관계에 설명 합니다.This is very readable and explains the relationship clearly. 이 코드의 예로: ArgumentOutOfRangeException는 일종의 Exception, 및 SerializableAttribute, 종류는의 Attribute.Some examples of this in code are: ArgumentOutOfRangeException, which is a kind of Exception, and SerializableAttribute, which is a kind of Attribute. 그러나 반드시이 지침은; 적용할 합리적인 판단을 사용 하 여 예를 들어 합니다 Button 클래스는 일종의 Control 이벤트 있지만 Control 이름에 표시 되지 않습니다.However, it is important to use reasonable judgment in applying this guideline; for example, the Button class is a kind of Control event, although Control doesn’t appear in its name.

✓ DO 문자로 접두사 인터페이스 이름을 I, 유형을 인터페이스 임을 나타냅니다.✓ DO prefix interface names with the letter I, to indicate that the type is an interface.

예를 들어 IComponent (설명이 포함 된 명사) ICustomAttributeProvider (명사구) 및 IPersistable (명사)은 적절 한 인터페이스 이름입니다.For example, IComponent (descriptive noun), ICustomAttributeProvider (noun phrase), and IPersistable (adjective) are appropriate interface names. 다른 형식 이름과 마찬가지로 약어를 방지 합니다.As with other type names, avoid abbreviations.

✓ DO 이름으로 "I" 접두사 인터페이스 이름에는 클래스는 인터페이스의 표준 구현 클래스-인터페이스 쌍을 정의 하는 경우에 다른 지 확인 합니다.✓ DO ensure that the names differ only by the "I" prefix on the interface name when you are defining a class–interface pair where the class is a standard implementation of the interface.

제네릭 형식 매개 변수 이름Names of Generic Type Parameters

제네릭은은.NET Framework 2.0에 추가 되었습니다.Generics were added to .NET Framework 2.0. 기능 도입 라는 식별자의 새 종류 형식 매개 변수합니다.The feature introduced a new kind of identifier called type parameter.

✓ DO 단일 문자 이름을 완전히 자체 설명 하 고 설명 하는 이름 값을 더 하지 않는 경우 제외 설명적인 이름으로 name 제네릭 형식 매개 변수입니다.✓ DO name generic type parameters with descriptive names unless a single-letter name is completely self-explanatory and a descriptive name would not add value.

✓ CONSIDER 를 사용 하 여 T 단일 문자 형식 매개 변수를 사용 하는 형식에 대 한 형식 매개 변수 이름으로 합니다.✓ CONSIDER using T as the type parameter name for types with one single-letter type parameter.

public int IComparer<T> { ... }  
public delegate bool Predicate<T>(T item);  
public struct Nullable<T> where T:struct { ... }  

✓ DO 설명적인 형식 매개 변수 이름 앞에 T합니다.✓ DO prefix descriptive type parameter names with T.

public interface ISessionChannel<TSession> where TSession : ISession {  
    TSession Session { get; }  
}  

✓ CONSIDER 제약 조건을 나타내는 매개 변수 이름의 형식 매개 변수에 적용 합니다.✓ CONSIDER indicating constraints placed on a type parameter in the name of the parameter.

매개 변수를 제한 하는 예를 들어 ISession 이라고 할 수 있습니다 TSession합니다.For example, a parameter constrained to ISession might be called TSession.

공용 형식의 이름Names of Common Types

✓ DO 또는 특정.NET Framework 형식이 구현에서 파생 된 형식의 이름을 지정할 때 다음 표에 설명 된 지침을 따르십시오.✓ DO follow the guidelines described in the following table when naming types derived from or implementing certain .NET Framework types.

Base TypeBase Type 파생 된 구현 형식 지침Derived/Implementing Type Guideline
System.Attribute ✓ DO 사용자 지정 특성 클래스의 이름에 "특성" 접미사를 추가 합니다.✓ DO add the suffix "Attribute" to names of custom attribute classes.
System.Delegate ✓ DO 이벤트에 사용 되는 대리자의 이름에 "EventHandler" 접미사를 추가 합니다.✓ DO add the suffix "EventHandler" to names of delegates that are used in events.

✓ DO 이외의 이벤트 처리기로 사용 되는 접미사 "Callback" 이름에 대리자를 추가 합니다.✓ DO add the suffix "Callback" to names of delegates other than those used as event handlers.

X DO NOT "대리자" 접미사는 대리자를 추가 합니다.X DO NOT add the suffix "Delegate" to a delegate.
System.EventArgs ✓ DO "EventArgs입니다." 접미사 추가✓ DO add the suffix "EventArgs."
System.Enum X DO NOT 대신 해당 언어에서 지 원하는 키워드를 사용 하 여; 예를 들어 C#에서 사용 하 여이 클래스에서 파생 된 enum 키워드입니다.X DO NOT derive from this class; use the keyword supported by your language instead; for example, in C#, use the enum keyword.

X DO NOT "열거형" 또는 "Flag" 접미사 추가X DO NOT add the suffix "Enum" or "Flag."
System.Exception ✓ DO "예외" 접미사 추가✓ DO add the suffix "Exception."
IDictionary
IDictionary<TKey,TValue>
✓ DO "사전입니다." 접미사 추가✓ DO add the suffix "Dictionary." IDictionary 는 컬렉션의 특정 형식 이지만이 지침은 보다 일반적인 컬렉션 지침 보다 우선 합니다.Note that IDictionary is a specific type of collection, but this guideline takes precedence over the more general collections guideline that follows.
IEnumerable
ICollection
IList
IEnumerable<T>
ICollection<T>
IList<T>
✓ DO "Collection" 접미사 추가✓ DO add the suffix "Collection."
System.IO.Stream ✓ DO "스트림입니다." 접미사 추가✓ DO add the suffix "Stream."
CodeAccessPermission IPermission ✓ DO "권한" 접미사 추가✓ DO add the suffix "Permission."

열거형 이름 지정Naming Enumerations

일반적 열거형 형식 (열거형이 라고도 함)의 이름은 표준 형식 명명 규칙 (PascalCasing 등) 따라야 합니다.Names of enumeration types (also called enums) in general should follow the standard type-naming rules (PascalCasing, etc.). 그러나 열거형에 특별히 적용 되는 추가 사용 지침이 있습니다.However, there are additional guidelines that apply specifically to enums.

✓ DO 비트 필드에 해당 값이 경우가 아니면 열거형에 대 한 단수형 형식 이름을 사용 합니다.✓ DO use a singular type name for an enumeration unless its values are bit fields.

✓ DO 라고도 함 플래그 열거형 값으로 비트 필드 열거형에 대 한 복수 형식 이름을 사용 합니다.✓ DO use a plural type name for an enumeration with bit fields as values, also called flags enum.

X DO NOT enum 형식 이름에 "열거형" 접미사를 사용 합니다.X DO NOT use an "Enum" suffix in enum type names.

X DO NOT "플래그를"를 사용 하 여 또는 열거형에서 "Flags" 접미사 이름을 입력 합니다.X DO NOT use "Flag" or "Flags" suffixes in enum type names.

X DO NOT 서식 있는 텍스트 열거형 등에 대 한 열거형 값 이름 (예: "ad" 열거형의 ADO.), "rtf"에 접두사를 사용 합니다.X DO NOT use a prefix on enumeration value names (e.g., "ad" for ADO enums, "rtf" for rich text enums, etc.).

Portions © 2005, 2009 Microsoft Corporation. 모든 권리 보유.Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

사용 권한에서 교육, inc. 피어슨 재인쇄 Framework 디자인 지침: 다시 사용할 수 있는.NET 라이브러리, 2nd Edition에 대 한 규칙, 관용구 패턴과 Krzysztof Cwalina를 Brad Abrams Addison Wesley Professional에서 2008 년 10 월 22 일 Microsoft Windows 개발 시리즈의 일부로 게시 합니다.Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.

참고자료See also