Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Это содержимое перепечатывается разрешением Pearson Education, Inc. из руководства по проектированию платформы: соглашения, идиомы и шаблоны для повторно используемых библиотек .NET, 2-го выпуска. Этот выпуск был опубликован в 2008 году, и книга с тех пор была полностью пересмотрена в третьем выпуске. Некоторые сведения на этой странице могут быть устаревшими.
Как и в других рекомендациях по именованию, цель при именовании пространств имен заключается в создании достаточной ясности для программиста, использующего платформу, чтобы сразу понять, какое содержимое может иметь пространство имен. Следующий шаблон задает общее правило именования пространств имен.
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
Ниже приведены примеры:
Fabrikam.Math
Litware.Security
✔️ Перед именами пространств имен добавляйте префикс с именем компании, чтобы предотвратить совпадение имен пространств имен у разных компаний.
✔️ Используйте стабильное независимое от версии имя продукта на втором уровне имени пространства имен.
❌ НЕ используйте иерархии организации в качестве основы имен в иерархиях пространства имен, так как имена групп в корпорациях, как правило, являются короткими. Упорядочьте иерархию пространств имен, основываясь на группах связанных технологий.
✔️ Необходимо использовать PascalCasing и разделять компоненты пространства имен с помощью точек (например, Microsoft.Office.PowerPoint). Если ваш бренд использует нестандартный регистр, необходимо придерживаться регистров, определённых вашим брендом, даже если они отклоняются от обычных норм пространства имен.
Рассмотрите возможность использования имен пространств имен во множественном числе, где это необходимо.
Например, используйте функцию System.Collections вместо System.Collection. Имена и акронимы бренда являются исключениями этого правила, однако. Например, используйте функцию System.IO вместо System.IOs.
❌ Не используйте то же имя для пространства имен и типа в нем.
Например, не используйте Debug в качестве имени пространства имен, а затем укажите класс, именованный Debug в том же пространстве имен. Для нескольких компиляторов требуется, чтобы такие типы были полностью квалифицированы.
Пространства имен и конфликты наименований типов
❌ Не вводите имена универсальных типов, например Element, Node, Logи Message.
Существует очень высокая вероятность того, что это приведет к конфликтам имен типов в типичных сценариях. Необходимо указать имена универсальных типов (FormElement, XmlNode, EventLog, SoapMessage).
Существуют конкретные рекомендации по предотвращению конфликтов имен типов для разных категорий пространств имен.
Пространства имен модели приложения
Пространства имен, принадлежащие одной модели приложения, часто используются вместе, но они почти никогда не используются с пространствами имен других моделей приложений. Например, пространство имен 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. Важно, чтобы типы, принадлежащие одной технологии, не конфликтуют друг с другом.❌ НЕ присваивайте имена типов, конфликтующие с другими типами в рамках одной технологии.
❌ Не вводите конфликты имен типов между типами в пространствах имен технологий и пространством имен модели приложения (если технология не предназначена для использования с моделью приложения).
© Часть 2005, 2009 Корпорация Майкрософт. Все права защищены.
Перепечатан с разрешения Pearson Education, Inc. из Руководство по проектированию: Соглашения, идиомы и шаблоны для повторного использования библиотек .NET, 2-е издание Кшиштоф Чвалина и Брэд Абрамс, опубликованное 22 октября 2008 года Addison-Wesley Профессиональный в рамках серии разработки Microsoft Windows.