Имена пространств имен.

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

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

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

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

Прибавляйте к именам пространств имен префикс, состоящий из названия компании; это делается для того, чтобы пространства имен различных компаний не имели одинаковых имен и префиксов.

На втором уровне иерархии имен пространств имен используйте постоянное, независимое от версий имя продукта.

Не используйте организационные иерархии в качестве основы имен в иерархии пространств имен, так как названия групп в корпорациях недолговечны.

Имя пространства имен используется долго и является неизменяемым идентификатором. Имена пространств имен не должны устаревать по мере развития организации.

Применяйте правила использования прописных и строчных букв языка Pascal и отделяйте компоненты имени пространства имен точками (например, Microsoft.Office.PowerPoint). Если в названии торговой марки используется нестандартный регистр символов, то нужно придерживаться данного написания, даже если оно отклоняется от обычных правил, применяемых для пространств имен.

Рекомендуется использовать имена пространств имен во множественном числе, если это допустимо. Например, используйте System.Collections вместо System.Collection. Однако торговые марки и акронимы являются исключением из этого правила. Например, используйте System.IO вместо System.IOs.

Не следует использовать одно и то же имя для пространства имен и типа в этом пространстве имен. Например, не используйте Debug в качестве имени пространства имен и одновременно класса в этом пространстве имен. Некоторые компиляторы требуют, чтобы такие типы были полностью определены.

Конфликты имен пространств имен и типов

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

Некоторые рекомендации данного раздела относятся к следующим категориям пространств имен:

  • Пространства имен модели приложения

  • Пространства имен инфраструктуры

  • Основные пространства имен

  • Группы пространств имен технологий

Пространства имен в модели приложения предоставляют набор функций, относящихся к тому или иному классу приложений. Например, типы из пространств имен System.Windows.Forms предоставляют функции, необходимые для написания клиентских приложений Windows Forms. Типы из пространств имен System.Web поддерживают написание серверных веб-приложений. В общем случае пространства имен из различных моделей приложений не используются в одном приложении, поэтому маловероятно, что конфликты имен повлияют на разработчиков, использующих библиотеку.

Приложения инфраструктуры обеспечивают особую поддержку; ссылки на них редко присутствуют в программном коде. Например, типы из пространств имен *.Designer используются средствами разработки программ. Пространства имен *.Permissions являются еще одним примером пространств имен инфраструктуры. Маловероятно, чтобы конфликты имен с типами из пространств имен инфраструктуры повлияли на разработчиков, использующих библиотеку.

Основные пространства имен — это пространства имен System.* (за исключением пространств имен приложений и инфраструктуры). В качестве примеров основных пространств имен можно назвать пространства System и System.Text. Следует всеми способами не допускать конфликтов имен типов из основных пространств имен.

Пространства имен, принадлежащие определенной технологии, имеют одинаковые идентификаторы первого и второго уровня (Company.technology.*). Следует избегать конфликта имен внутри технологии.

Общие рекомендации по именованию пространств имен

Не вводите имена универсальных типов, такие как Element, Node, Log и Message. Велика вероятность того, что в общих сценариях это приведет к конфликтам имен типов. Следует полностью определять имена универсальных типов (FormElement, XmlNode EventLog, SoapMessage).

Рекомендации по именованию пространств имен приложений

Не присваивайте одинаковые имена типам в пространствах имен внутри одной модели приложения.

Например, при создании библиотеки особых элементов управления, которую будут использовать разработчики приложений Windows Forms, не следует вводить тип с именем Checkbox, так как тип с этим именем уже существует в модели приложения (CheckBox).

Рекомендации по именованию основных пространств имен

Не присваивайте имена типов, конфликтующие с каким-либо типом из основных пространств имен.

Например, не используйте Directory в качестве имени типа, так как оно вступит в конфликт с типом Directory.

Рекомендации по именованию пространств имен внутри технологий

Не назначайте имена типов, которые вступят в конфликт с другими типами внутри одной технологии.

Не создавайте конфликтов имен типов между типами из пространств имен технологии и пространстве имен модели приложения (если только не планируется использовать технологию с моделью приложения).

Фрагменты — © Корпорация Майкрософт (Microsoft Corp.), 2005. Все права защищены.

Фрагменты — © Addison-Wesley Corporation. Все права защищены.

Для дополнительной информации о разработке руководящих принципов, смотрите "руководства по разработке рамок: Конвенций, идиомы и шаблоны для повторного использования.NET библиотек"книга, Кшиштоф Cwalina и Брэд Абрамс, опубликованных Addison-Wesley, 2005 года.

См. также

Другие ресурсы

Руководство по разработке библиотек классов

Правила именования