Рекомендации по пространству имен и именам классов

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

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

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 ответа

Решение
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 можно найти здесь: Руководство по разработке структуры

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

Другие вопросы по тегам