업데이트: 2007년 11월
네임스페이스에 사용하기 위해 선택한 이름은 네임스페이스의 형식에서 제공하는 기능을 나타내야 합니다. 예를 들어, System.Net.Sockets 네임스페이스에는 개발자가 소켓을 사용하여 네트워크에서 통신할 수 있는 형식이 포함되어 있습니다.
네임스페이스 이름에 대한 일반 형식은 다음과 같습니다.
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
예를 들어, Microsoft.WindowsMobile.DirectX입니다.
기업의 그룹 이름은 일반적으로 수명이 짧으므로 네임스페이스 계층 구조의 이름에 대한 기준으로 조직 계층 구조를 사용하지 않습니다.
네임스페이스 이름은 수명이 길고 변경되지 않는 식별자입니다. 조직 성장에 따른 변경으로 네임스페이스 이름이 사용할 수 없는 이름이 되어서는 안 됩니다.
네임스페이스 및 형식 이름 충돌
기존 이름과 충돌하는 네임스페이스 또는 형식 이름을 선택하는 경우, 라이브러리 사용자가 영향을 받는 항목에 대한 참조를 규정해야 합니다. 이는 대부분의 개발 시나리오에 해당되지는 않습니다.
이 단원에서 설명하는 지침 중 일부는 다음 네임스페이스 범주와 관련이 있습니다.
응용 프로그램 모델 네임스페이스
인프라 네임스페이스
핵심 네임스페이스
기술 네임스페이스 그룹
응용 프로그램 모델의 네임스페이스는 응용 프로그램 클래스의 특정 기능 집합을 제공합니다. 예를 들어, System.Windows.Forms 네임스페이스의 형식은 Windows Forms 클라이언트 응용 프로그램을 작성하는 데 필요한 기능을 제공합니다. System.Web 네임스페이스의 형식은 웹 기반 서버 응용 프로그램 작성을 지원합니다. 일반적으로 다른 응용 프로그램 모델의 네임스페이스는 동일한 응용 프로그램에서 사용되지 않으므로, 이름 충돌로 사용자 라이브러리를 사용하는 개발자에게 영향을 주는 경우는 많지 않습니다.
인프라 응용 프로그램은 특수 지원을 제공하며 프로그램 코드에서 거의 참조되지 않습니다. 예를 들어, *.Designer 네임스페이스의 형식은 프로그램 개발 도구에서 사용됩니다. *.Permissions 네임스페이스는 인프라 네임스페이스의 또 다른 예입니다. 인프라 네임스페이스에 있는 형식과의 이름 충돌은 사용자 라이브러리를 사용하는 개발자에게 영향을 주지 않습니다.
핵심 네임스페이스는 응용 프로그램 및 인프라 네임스페이스를 제외한 System.* 네임스페이스입니다. System 및 System.Text는 핵심 네임스페이스의 예입니다. 핵심 네임스페이스의 형식과 이름은 절대로 충돌해서는 안 됩니다.
특정 기술에 속하는 네임스페이스의 첫 번째 수준 식별자와 두 번째 수준 식별자는 모두 Company.technology.*입니다. 기술에서 이름이 충돌해서는 안 됩니다.
응용 프로그램 네임스페이스 지침
단일 응용 프로그램 모델에서 네임스페이스의 형식에 같은 이름을 지정하지 않습니다.
예를 들어, Windows Forms 응용 프로그램 개발자가 사용할 특수 컨트롤의 라이브러리를 작성하는 경우 응용 프로그램 모델에 대해 이 이름을 사용하는 형식(CheckBox)이 이미 있으므로 Checkbox 형식을 사용해서는 안 됩니다.
핵심 네임스페이스 지침
핵심 네임스페이스의 형식과 충돌할 형식 이름은 지정하지 않습니다.
예를 들어, Directory를 형식 이름으로 사용하는 경우 Directory 형식과 충돌하므로 사용해서는 안 됩니다.
기술 네임스페이스 지침
해당 기술을 응용 프로그램 모델에서 사용하려는 경우, 기술 네임스페이스와 응용 프로그램 모델 네임스페이스의 형식 간에 충돌할 수 있는 형식 이름은 사용하지 않습니다.
Portions Copyright 2005 Microsoft Corporation. All rights reserved.
Portions Copyright Addison-Wesley Corporation. All rights reserved.
디자인 지침에 대한 자세한 내용은 2005년에 Addison-Wesley에서 책으로 출간한 Krzysztof Cwalina와 Brad Abrams의 "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries"를 참조하십시오.