2009-05-28 2 views
43

Для тех из вас, кто пишет многократно используемые компоненты, что вы считаете лучшей практикой, если расширяете функциональность платформы .NET?Соглашения об именах имен пространства

Например, я создаю библиотеку Pop3 на данный момент, так как ее нет в .NET. Создать собственное пространство имен или использовать System.Net.Mail?

ответ

57

От Namespace Naming Guidelines:

Общее правило для обозначения пространства имен является использование названия компании, за которой следует название технологии и необязательно функции и дизайн следующим образом. Скопируйте код

CompanyName.TechnologyName[.Feature][.Design]

Вообще это очень плохая практика, чтобы начать в том числе вещи в пространство имен по умолчанию фреймворка или библиотеки. Это может вызвать путаницу в отношении того, является ли новое пространство имен частью существующей библиотеки, которая является частью структуры, которая распространяется всем, или является частью настраиваемой структуры, которая была добавлена ​​кем-то другим.

Кроме того, соглашение об именах пытается избежать столкновений пространства имен, имея уникальные идентификаторы, такие как CompanyName. Это также уменьшает любые путаницы и проблемы с точки зрения источника новой библиотеки.

Это не только Microsoft, но и Java. Пространства имен в Java, называемые «пакеты» имеет following convention:

Приставка уникального имени пакета всегда пишется во всех-строчных ASCII буквами и должно быть одним из имен доменов верхнего уровня , в настоящее время ком, Edu, гов, млн, чистая, орг, или один из английских двух буквенных кодов, идентифицирующих страны, как указано в стандарте ISO 3166, 1981.

Последующие компоненты имени пакета варьироваться в зависимости от a собственное внутреннее присвоение организации конвенций. Такие соглашения могут указать, что определенное имя каталога компонентами являются разделение, отдел, имя проекта, имя машины или имя пользователя.

Так что, если бы у меня была супер удивительная часть программного обеспечения, она может быть в пакете net.coobird.superawesomesoftware.

И с использованием названий пакетов, содержащих по умолчанию java., javax., com.sun. пакеты являются большими, нет-нет.

+1

@Sir Psycho: Coobird - это правильно, но вам также необходимо поддерживать открытый разум, если вы не хотите, чтобы пространство имен было слишком глубоким. Я начинаю беспокоиться после того, как я напечатаю 3 '.' в имени пространства имен. – Perpetualcoder

+0

@Sir Psycho: В руководящих принципах пространства имен также говорится, что хорошо зарекомендовавший себя бренд - это другой вариант, а не название компании - это рекомендации, позволяющие избежать конфликтов пространства имен. Итак, возможно, какой-то заголовок (например, ваше имя пользователя?), Который уникален для других, может быть хорошей заменой для CompanyName :) – coobird

+0

@Perpetualcoder Если вы беспокоитесь о слишком глубоких пространствах имен, используйте псевдоним ... – LILkillaBEE

15

имеют Также смотрите на следующей статье MSDN для руководящих принципов, о присвоении Namespaces

Names of Namespaces

Имя, выбранное для пространства имен следует указать функции из доступны по типам в пространстве имен. Например, System.Net.Пространство имен Sockets содержит типы, которые позволяют разработчикам использовать сокеты для связи по сетям через .

Общий формат для имени пространства имен выглядит следующим образом:

<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]

Например, Microsoft.WindowsMobile.DirectX.

+0

Что такое полный пример с использованием всех частей? Microsoft.WindowsMobile.DirectX.Lines? –