네임스페이스의 이름
참고
이 콘텐츠는 Pearson Education, Inc.의 허가를 받아 프레임워크 디자인 지침: 재사용 가능한 .NET 라이브러리에 대한 규칙, 관용어 및 패턴, 2판에서 재인쇄되었습니다. 이 버전은 2008년에 출판되었으며 이후 3판에서 완전히 개정되었습니다. 이 페이지의 정보 중 일부는 최신 정보가 아닐 수 있습니다.
다른 명명 지침과 마찬가지로 네임스페이스 명명 시 목표는 프레임워크를 사용하는 프로그래머가 네임스페이스의 콘텐츠가 무엇인지 즉시 알 수 있도록 충분한 명확성을 제공하는 것입니다. 다음 템플릿은 네임스페이스 명명에 대한 일반 규칙을 지정합니다.
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
다음은 예입니다.
Fabrikam.Math
Litware.Security
✔️ 서로 다른 회사의 네임스페이스가 동일한 이름을 갖는 것을 방지하려면 네임스페이스 이름 앞에 회사 이름을 붙이세요.
✔️ 네임스페이스 이름의 두 번째 수준에서는 안정적이고 버전 독립적인 제품 이름을 사용합니다.
❌ 회사 내의 그룹 이름은 수명이 짧은 경향이 있으므로 조직 계층을 네임스페이스 계층의 이름 기반으로 사용하지 마세요. 관련 기술 그룹을 중심으로 네임스페이스의 계층 구조를 구성합니다.
✔️ PascalCasing(파스칼 표기법)을 사용하고 네임스페이스 구성 요소를 마침표(예: Microsoft.Office.PowerPoint
)로 구분합니다. 브랜드가 비전통적인 대/소문자를 사용하는 경우 일반 네임스페이스 대/소문자와 다르더라도 브랜드에서 정의한 대/소문자를 따라야 합니다.
✔️ 적절한 경우 복수의 네임스페이스 이름을 사용하는 것이 좋습니다.
예를 들어 System.Collection
대신 System.Collections
을 사용합니다. 그러나 브랜드 이름과 약어는 이 규칙의 예외입니다. 예를 들어 System.IOs
대신 System.IO
을 사용합니다.
❌ 네임스페이스와 해당 네임스페이스의 형식에 동일한 이름을 사용하지 마세요.
예를 들어, Debug
를 네임스페이스 이름으로 사용하지 말고 동일한 네임스페이스에 Debug
라는 클래스도 제공합니다. 몇몇 컴파일러에서는 이러한 형식이 정규화되어야 합니다.
❌Element
, Node
, Log
및 Message
와 같은 제네릭 형식 이름을 도입하지 마세요.
그렇게 하면 일반적인 시나리오에서 형식 이름 충돌이 발생할 가능성이 매우 높습니다. 제네릭 형식 이름(FormElement
, XmlNode
, EventLog
, SoapMessage
)을 한정해야 합니다.
다양한 네임스페이스 범주에 대한 형식 이름 충돌을 방지하기 위한 특정 지침이 있습니다.
애플리케이션 모델 네임스페이스
단일 애플리케이션 모델에 속하는 네임스페이스는 함께 사용되는 경우가 많지만, 다른 애플리케이션 모델의 네임스페이스와 함께 사용되는 경우는 거의 없습니다. 예를 들어, System.Windows.Forms 네임스페이스는 System.Web.UI 네임스페이스와 함께 사용되는 경우가 거의 없습니다. 다음은 잘 알려진 애플리케이션 모델 네임스페이스 그룹의 목록입니다.
System.Windows*
System.Web.UI*
❌ 단일 애플리케이션 모델 내 네임스페이스의 형식에 동일한 이름을 지정하지 마세요.
예를 들어, System.Web.UI 네임스페이스에 이미
Page
라는 형식이 포함되어 있으므로Page
라는 형식을 System.Web.UI.Adapters 네임스페이스에 추가하지 마세요.인프라 네임스페이스
이 그룹에는 일반 애플리케이션 개발 중에 거의 가져오지 않는 네임스페이스가 포함되어 있습니다. 예를 들어,
.Design
네임스페이스는 프로그래밍 도구를 개발할 때 주로 사용됩니다. 이러한 네임스페이스의 형식과의 충돌을 피하는 것은 중요하지 않습니다.Core 네임스페이스
Core 네임스페이스에는 애플리케이션 모델의 네임스페이스와 인프라 네임스페이스를 제외한 모든
System
네임스페이스가 포함됩니다. Core 네임스페이스에는System
,System.IO
,System.Xml
및System.Net
이 포함됩니다.❌ Core 네임스페이스의 모든 형식과 충돌할 수 있는 형식 이름을 제공하지 마세요.
예를 들어,
Stream
을 형식 이름으로 사용하지 마세요. 이는 매우 일반적으로 사용되는 형식인 System.IO.Stream과 충돌합니다.기술 네임스페이스 그룹
이 범주에는
Microsoft.Build.Utilities
및Microsoft.Build.Tasks
와 같이 처음 두 개의 네임스페이스 노드(<Company>.<Technology>*
)가 동일한 모든 네임스페이스가 포함됩니다. 단일 기술에 속하는 형식이 서로 충돌하지 않는 것이 중요합니다.❌ 단일 기술 내에서 다른 형식과 충돌할 수 있는 형식 이름을 할당하지 마세요.
❌ 기술 네임스페이스와 애플리케이션 모델 네임스페이스의 형식 간에 형식 이름 충돌을 일으키지 마세요(기술이 애플리케이션 모델과 함께 사용되도록 의도되지 않은 경우).
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.