Поделиться через


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

Примечание.

Это содержимое перепечатывается разрешением Pearson Education, Inc. из руководства по проектированию платформы: соглашения, идиомы и шаблоны для повторно используемых библиотек .NET, 2-го выпуска. Этот выпуск был опубликован в 2008 году, и книга с тех пор была полностью пересмотрена в третьем выпуске. Некоторые сведения на этой странице могут быть устаревшими.

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

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

Ниже приведены примеры:

Fabrikam.Math Litware.Security

✔️ Имена пространств имен do префикса с именем компании, чтобы предотвратить одно и то же имя пространств имен из разных компаний.

✔️ Используйте стабильное независимое от версии имя продукта на втором уровне имени пространства имен.

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

✔️ Используйте PascalCasing и отдельные компоненты пространства имен с точками (например, Microsoft.Office.PowerPoint). Если ваш бренд использует неттрадиционный регистр, следует следовать регистру, определенному вашим брендом, даже если он отклоняется от обычного регистра пространства имен.

✔️ Рекомендуется использовать имена пространств имен множественного числа, где это необходимо.

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

❌ Не используйте то же имя для пространства имен и типа в этом пространстве имен.

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

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

❌ Не вводите имена универсальных типов, например Element, Node, Logи Message.

Существует очень высокая вероятность того, что это приведет к конфликтам имен типов в распространенных сценариях. Необходимо указать имена универсальных типов (FormElement, , XmlNode, SoapMessageEventLog).

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

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

    Пространства имен, принадлежащие одной модели приложения, часто используются вместе, но они почти никогда не используются с пространствами имен других моделей приложений. Например, System.Windows.Forms пространство имен очень редко используется вместе с пространством System.Web.UI имен. Ниже приведен список известных групп пространств имен модели приложений:

    System.Windows* System.Web.UI*

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

    Например, не добавляйте тип с именем PageSystem.Web.UI.Adapters в пространство имен, так как System.Web.UI пространство имен уже содержит тип с именем Page.

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

    Эта группа содержит пространства имен, которые редко импортируются во время разработки распространенных приложений. Например, .Design пространства имен используются главным образом при разработке средств программирования. Избегайте конфликтов с типами в этих пространствах имен.

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

    Основные пространства имен включают все System пространства имен, за исключением пространств имен моделей приложений и пространств имен инфраструктуры. Основные пространства имен включают, среди прочего, System, , System.IOи System.XmlSystem.Net.

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

    Например, никогда не используйте Stream в качестве имени типа. Он конфликтует с System.IO.Streamочень часто используемым типом.

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

    Эта категория включает все пространства имен с теми же двумя первыми двумя узлами (<Company>.<Technology>*пространства имен, такими как Microsoft.Build.Utilities и Microsoft.Build.Tasks. Важно, чтобы типы, принадлежащие одной технологии, не конфликтуют друг с другом.

    ❌ НЕ присваивайте имена типов, конфликтующие с другими типами в рамках одной технологии.

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

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

Перепечатано с разрешения Pearson Education, Inc. из книги Инфраструктура программных проектов. Соглашения, идиомы и шаблоны для многократно используемых библиотек .NET (2-е издание), авторы: Кржиштоф Цвалина (Krzysztof Cwalina) и Брэд Абрамс (Brad Abrams). Книга опубликована 22 октября 2008 г. издательством Addison-Wesley Professional в рамках серии, посвященной разработке для Microsoft Windows.

См. также