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

참고 항목

이 콘텐츠는 Pearson Education, Inc.의 허가를 받아 프레임워크 디자인 지침: 재사용 가능한 .NET 라이브러리에 대한 규칙, 관용어 및 패턴, 2판에서 재인쇄되었습니다. 이 버전은 2008년에 출판되었으며 이후 3판에서 완전히 개정되었습니다. 이 페이지의 정보 중 일부는 최신 정보가 아닐 수 있습니다.

다음의 명명 지침은 일반 형식 명명에 적용됩니다.

✔️ PascalCasing을 사용하여 명사 또는 명사구로 클래스 및 구조체 이름을 지정하세요.

이는 동사구로 이름이 지정된 메서드와 형식 이름을 구분합니다.

✔️ 형용사구 또는 명사나 명사구와의 인터페이스 이름을 지정하세요.

명사와 명사구는 거의 사용하지 않아야 하며 형식이 인터페이스가 아니라 추상 클래스여야 함을 나타낼 수 있습니다.

❌ 클래스 이름에 접두사(예: "C")를 붙이지 마세요.

✔️ 파생 클래스 이름을 기본 클래스 이름으로 끝내해 보세요.

이는 매우 읽기 쉽고 관계를 명확하게 설명합니다. 코드에서 이에 대한 몇 가지 예는 Exception의 일종인 ArgumentOutOfRangeExceptionAttribute의 일종인 SerializableAttribute입니다. 그러나 이 지침을 적용할 때는 합리적인 판단을 내리는 것이 중요합니다. 예를 들어, Button 클래스는 일종의 Control 이벤트이지만 이름에는 Control이 표시되지 않습니다.

✔️ 형식이 인터페이스임을 나타내기 위해 인터페이스 이름 앞에 문자 I를 붙이세요.

예를 들어, IComponent(설명 명사), ICustomAttributeProvider(명사구) 및 IPersistable(형용사)는 적절한 인터페이스 이름입니다. 다른 형식 이름과 마찬가지로 약어를 사용하지 마세요.

✔️ 클래스가 인터페이스의 표준 구현인 클래스-인터페이스 쌍을 정의할 때 인터페이스 이름의 "I" 접두사만 이름이 다른지 확인하세요.

제네릭 형식 매개 변수의 이름

제네릭이 .NET Framework 2.0에 추가되었습니다. 이 기능에는 형식 매개 변수라는 새로운 형식의 식별자가 도입되었습니다.

✔️ 필수적 단일 문자 이름으로도 자체 설명이 가능하여 설명적인 이름을 굳이 사용할 필요가 없는 경우가 아니면 제네릭 형식 매개 변수 이름을 설명적인 이름으로 지정하세요.

✔️ 선택적 단일 문자 형식 매개 변수를 사용하는 형식에는 형식 매개 변수 이름으로 T를 사용해 보세요.

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

✔️ 필수적 설명적인 형식 매개 변수 이름 앞에 T를 붙이세요.

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

✔️ 매개 변수 이름에 형식 매개 변수에 적용되는 제약 조건을 나타내 보세요.

예를 들어, ISession으로 제한된 매개 변수는 TSession이라고 불릴 수 있습니다.

일반적인 형식의 이름

✔️ 특정 .NET Framework 형식에서 파생된 형식의 이름을 지정하거나 구현할 때 다음 표에 설명된 지침을 따르세요.

Base Type 파생/구현 형식 지침
System.Attribute ✔️ 사용자 지정 특성 클래스 이름에 접미사 "특성"을 추가하세요.
System.Delegate ✔️ 이벤트에 사용되는 대리자 이름에 접미사 "EventHandler"를 추가하세요.

✔️ 이벤트 처리기로 사용되는 대리자가 아닌 대리자의 이름에는 접미사 "콜백"을 추가하세요.

❌ 대리자에게 접미사 "Delegate"를 추가하지 마세요.
System.EventArgs ✔️ 접미사 "EventArgs"를 추가하세요.
System.Enum ❌ 이 클래스에서 파생되도록 하지 말고 사용자의 언어에서 지원되는 키워드를 사용합니다. 예를 들어, C#에서는 enum 키워드를 사용합니다.

❌ 접미사 "Enum" 또는 "Flag"를 추가하지 마세요.
System.Exception ✔️ 접미사 "Exception"을 추가하세요.
IDictionary
IDictionary<TKey,TValue>
✔️ 접미사 "Dictionary"를 추가하세요. IDictionary는 특정 형식의 컬렉션이지만 이 지침은 다음에 나오는 보다 일반적인 컬렉션 지침보다 우선합니다.
IEnumerable
ICollection
IList
IEnumerable<T>
ICollection<T>
IList<T>
✔️ 접미사 "Collection"을 추가하세요.
System.IO.Stream ✔️ 접미사 "Stream"을 추가하세요.
CodeAccessPermission IPermission ✔️ 접미사 "Permission"을 추가하세요.

열거형 이름 지정

열거형 형식(열거형이라고도 함)의 이름은 일반적으로 표준 형식 명명 규칙(PascalCasing 등)을 따라야 합니다. 그러나 열거형에 특별히 적용되는 추가 지침이 있습니다.

✔️ 해당 값이 비트 필드가 아닌 한 열거형에 단일 형식 이름을 사용하세요.

✔️ 비트 필드를 값으로 사용하는 열거형(플래그 열거형이라고도 함)에는 복수형 이름을 사용하세요.

❌ 열거형 형식 이름에 "Enum" 접미사를 사용하지 마세요.

❌ 열거형 형식 이름에 "Flag" 또는 "Flags" 접미사를 사용하지 마세요.

❌ 열거형 값 이름에 접두사를 사용하지 마세요(예: ADO 열거형의 경우 "ad", 서식 있는 텍스트 열거형의 경우 "rtf" 등).

Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

Pearson Education, Inc의 동의로 재인쇄. 출처: Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition 작성자: Krzysztof Cwalina 및 Brad Abrams, 출판 정보: Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.

참고 항목