Имена пространств имен.
Примечание.
Это содержимое перепечатывается разрешением 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
, SoapMessage
EventLog
).
Существуют конкретные рекомендации по предотвращению конфликтов имен типов для разных категорий пространств имен.
Пространства имен модели приложения
Пространства имен, принадлежащие одной модели приложения, часто используются вместе, но они почти никогда не используются с пространствами имен других моделей приложений. Например, System.Windows.Forms пространство имен очень редко используется вместе с пространством System.Web.UI имен. Ниже приведен список известных групп пространств имен модели приложений:
System.Windows*
System.Web.UI*
❌ Не предоставляйте то же имя типам в пространствах имен в одной модели приложения.
Например, не добавляйте тип с именем
Page
System.Web.UI.Adapters в пространство имен, так как System.Web.UI пространство имен уже содержит тип с именемPage
.Пространства имен инфраструктуры
Эта группа содержит пространства имен, которые редко импортируются во время разработки распространенных приложений. Например,
.Design
пространства имен используются главным образом при разработке средств программирования. Избегайте конфликтов с типами в этих пространствах имен.Основные пространства имен
Основные пространства имен включают все
System
пространства имен, за исключением пространств имен моделей приложений и пространств имен инфраструктуры. Основные пространства имен включают, среди прочего,System
, ,System.IO
иSystem.Xml
System.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.