|
По материалам статьи Jonathan Goodyear: Standardize
Your .NET Namespaces Помните, как трудно было организовать исходные тексты COM объектов в вашей организации? У вас наверно было два имени верхнего уровня, с которыми вы и работали: имя проекта и имя класса. Обычно ваши идентификаторы выглядели примерно так: XYZCompanyAccounting.Payroll Очевидно, что такой подход далеко не самый лучший. Наверно было бы более удобно, если бы существовала возможность разделить пространство имен еще на несколько частей. Например, предыдущий идентификатор в .NET может быть представлен следующим образом: XYZCompany.Accounting.Payroll Не очень большая разница по сравнению с предыдущим
объявлением, но она становится более очевидной, как только в
ваших проектах появится более глубокая иерархия
объектов. Структурируйте ваши пространства имен Хорошо принять за правило, что бы каждое пространство имен, которое вы используете в каком-либо из модулей, начиналось с идентификатора вашей компании. Например: идентификатор в моем предыдущем примере начинался с "XYZCompany.". Следующая секция идентификатора вашего пространства имен зависит от соответствующей области, описываемой кодом. Если код описывает бизнес логику проекта, тогда следующая секция пространства имен должна содержать название вашего проекта (в данном случае "Accounting,"). Далее следует название подраздела вашего проекта (в нашем случае "Payroll"). Все это означает, что пространство имен в вашем проекте должно выглядеть так: XYZCompany.Accounting.Payroll Потом вы можете структурировать классы внутри пространства
имен XYZCompany.Accounting.Payroll для своих конкретных задач.
Для сегментации пространств имен бизнес логики на более мелкие
сущности, вы можете разделить код вашего проекта на более
специфичные части в VSS (более подробно об этом позже). XYZCompany.Accounting.Website Структура пространства имен, которую вы используете, может варьироваться, в зависимости от предметной области, которую описывает ваш код. Если ваш код будет использоваться в других проектах вашей организации, то не включайте в название пространства имен название своего проекта. Я также предлагаю вам не создавать своих собственных стандартов для названий пространств имен. Вместо этого следуйте лучше стандарту, который уже предложил Microsoft для .NET Framework. Например, если разработчики компании XYZCompany создали библиотеку классов, которую предполагается использовать для доступа к SQL Server в разных проектах, то соответствующее пространство имен следует назвать так: XYZCompany.Data.SqlClient В .NET Framework уже есть пространство имен
System.Data.SqlClient. XYZCompany.Diagnostics Всегда хорошо давать уникальные имена классам внутри одного пространства имен. Этим вы предотвращаете проблему с дублированием имен, когда необходимо использовать классы с одинаковыми именами, но из разных пространств имен. Важность создания своих пространств имен предложенным способом обусловлена несколькими причинами. Во-первых, выделяя в пространстве имен название своей компании, вы, тем самым, предотвращаемее возможные коллизии с продуктами третьих фирм, которые возможно будете использовать в будущем. Во вторых, адоптируя иерархию пространств имен, принятую в .NET Framework, вы облегчаете разработчикам поиск какого-либо класса во всей инфраструктуре компании, который им в данный момент нужен. Предложенный Microsoft стандарт возможно не идеален, но он позволяет разработчикам быстро и легко найти то, что им нужно, вместо того чтобы изучать разные документы и регламенты, в которых описывается структура репозитария вашей организации. В третьих, создавая иерархию пространств имен предложенным способом, вы потом сможете легко документировать его, создав похожую по стилю на MSDN документацию. Для этого можно будет использовать систему документирования, например NDoc. Структурируйте ваши проекты Теперь, когда вы привели в порядок названия ваших пространств имен, вам возможно будет интересно, как следует структурировать ваш проект в VSS. Я предлагаю два узла верхнего уровня в дереве VSS. XYZ Enterprise .NET Class Library
![]() Два узла верхнего уровня позволяют создать два различных
вида документации (один для кода проекта и другой, для вашей
компании). Под каждым узлом создайте узел с названием проекта
(в нашем случае XYZCompany). Это будет вашим корнем
пространства имен. В остальных узлах дерева продублируйте
структуры ваших пространств имен, заменяя точки "." папками
(см. рис.). Не забывайте давать полные имена файлам вашего
проекта. |
Перевод Максима Зубова 2003г. |