Соглашения об именах пространства имен доменной модели - PullRequest
1 голос
/ 12 января 2011

Проблема:

Для приложений mvc asp.net я игнорирую папку домена и записываю модель домена в отдельный библиотечный проект.

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

ES.eLearning.Domain

, и у меня есть папка с именем Services, она будет автоматически именовать все классы в папке Services как:

ES.eLearning.Domain.Services

Все хорошо, но мне кажется излишним.Мои проекты относительно просты, и поэтому нет шансов столкновения имен классов.Даже если бы это было так, компилятор подхватил бы его.

Поэтому я просто вручную редактировал имена пространств имен для имени проекта, то есть:

ES.eLearning.Domain

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

Таким образом, возникает два вопроса:

  1. Это плохая практика?Если так, то почему?Помните: это небольшие и средние проекты.

  2. Есть ли способ сообщить VS 2010, как назвать мои пространства имен?

Спасибо

Примечание. В моем названии проекта ES - это клиент, eLearning - это приложение, домен - это компонент

PS: другие вопросы, касающиеся соглашений об именах пространства имен, которые я нашел в SO, касаются различных проблем.Так что, насколько я могу судить, не дубликат.

Ответы [ 4 ]

1 голос
/ 13 января 2011

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

1 голос
/ 12 января 2011

Хорошая практика - уговорить вашу IDE использовать соглашение об именах, соответствующее вашей конкретной среде.Вы можете использовать поле пространства имен по умолчанию на вкладке Приложение в свойствах проекта, чтобы изменить пространство имен, которое VS автоматически вставляет в файлы классов.

0 голосов
/ 11 февраля 2011

Мои предложения использовать единственное окончание при именовании пространств имен, папок и классов.Например,

namespace ES.eLearning.Domain.Services

будет предпочтительнее как

ES.eLearning.Domain.Service // <-- note missing "s"

И еще один пример использования в исходном коде:

ES.eLearning.Domain.Constants.FileTypes.Text

может быть «лучше» понимать как

ES.eLearning.Domain.Constant.FileType.Text

Это все личные предпочтения и это не правило.Просто небольшая вещь, которая может сделать код (пространство имен) короче и легче читать одновременно.

PS.С другой стороны, ASP.NET MVC не следует этому «правилу»:

Content
Controllers
Models
Scripts
Views

Но ничто не мешает вам «переименовывать» их в исходном коде.

0 голосов
/ 12 января 2011

Я не уверен, можно ли в VS2010 настроить отключение этого .. но я бы не стал этого делать.

Если ваш файл кода находится в папке Domain, его пространство имен должно быть Company.Domain.Если в домене есть подпапка Services, пространством имен должно быть Company.Domain.Services.Это хорошо (и что важно - обычное, практическое занятие).

Вам лучше придерживаться правил, а не нарушать их:)

...