Рекомендации по пространству имен и именам классов - PullRequest
3 голосов
/ 07 сентября 2011

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

Как бы вы структурировали следующее:

EventService.cs
EventServiceUtils.cs
EventServiceValidators.cs
EventServiceCoordinator.cs

и т. Д.

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

Services.EventService.EventService.cs //(the actual service)
Services.EventService.Validators.DateValidator.cs
Services.EventService.Validators.ParticipantValidator.cs
Services.EventService.Coordinators.ParticipantCoordinator.cs
Services.EventService.ExtensionMethods.Extensions.cs

и так далее.Каждое пространство имен - это, конечно, отдельная папка.Но это не ощущается на 100%, поскольку в других службах, вероятно, больше DateValidators, что может легко привести к нежелательной ссылке.

А также Services.EventService.EventService.cs включает имя класса в пространство имен, что тоже не хорошо.Вы можете использовать Services.Event.EventService.cs, но, конечно, уже существует объект с таким именем.

Это модель домена.

Ответы [ 2 ]

1 голос
/ 05 октября 2011
AppName.Services.Events.EventService.cs //(the actual service)
AppName.Services.Events.ParticipantValidator.cs
AppName.Services.Events.ParticipantCoordinator.cs
AppName.Validators.DateValidator.cs
AppName.Text.Extensions.cs

Точки:

  • Добавление расширений в пространство имен, описывающих, что они расширяют
  • Добавление общих валидаторов для общего пространства имен
  • Использование имени приложенияв качестве верхнего уровня (Microsoft рекомендует название компании в соответствии с их рекомендациями)
  • Я бы не поместил координаторов в отдельное пространство имен, если их всего несколько.

MicrosoftРуководство можно найти здесь: Руководство по проектированию рамок

1 голос
/ 05 октября 2011

Вы можете поместить валидаторы (и другие классы), которые используются в более чем одном сервисе, в отдельном пространстве имен , названном, например.CommonValidators.
Вы можете изменить имя EventService.cs вместо изменения имени пространства имен - возможно, Main.cs или Default.cs?
Я предполагаю, что ваша служба имеет контракт в интерфейсе, так что это будет означать main /реализация контракта на обслуживание по умолчанию.

...