Предпочтительное соглашение об именовании пространств имен

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

Теперь предположим, что обычно используемая структура пространства имен

Core.Interfaces - для основного приложения с интерфейсом IFoo

и для каждой специализированной/внешней/ссылочной сборки я решил сделать расширение, например

Core.Interfaces.Html с интерфейсом IBar

сборка Core основного приложения находится в проекте с именем Core с пространством имен по умолчанию Core, а для сборки Html я создал проект с именем HtmlCore с пространством имен по умолчанию Core.

Эффект результата (и причина, по которой я выбрал эту конкретную методологию) заключается в том, что после того, как вы сослались на сборку Html, операторы using не нужно было бы обновлять, и чистый эффект

Core.Interfaces.IFoo fooIf;
Core.Interfaces.Html.IBar barIf;

или с оператором использования Core.Interfaces приведенное выше преобразуется в

IFoo fooIf;
Html.IBar barIf;

Эта неявная структура пространства имен является прямым результатом зависимостей, и она действительно сослужила нам хорошую службу, поскольку значительно упрощает обслуживание пространства имен проекта, и единственное, что нужно кому-то, — это ссылка на сборку. Структура аналогична тому, что Microsoft уже делает в .net framework.

Дело в том, что у меня есть другие мысли, и (для будущих проектов) я рассматриваю структуру пространства имен, которая является явной для каждой сборки, например:

Core.DataInterfaces
Html.Core.DataInterfaces

Итак, кто-нибудь работал со структурой explicit, с обеими или даже с чем-то еще, чего я не пробовал? Я открыт для предложений и ищу лучшее решение, поскольку цель состоит в том, чтобы освободить время от обслуживания и путаницы в команде во время разработки.


person Jaguar    schedule 18.11.2010    source источник


Ответы (1)


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

Помните, что вы всегда можете указать для использования псевдоним.

person Dustin Davis    schedule 01.02.2011