Рекомендации по пространству имен и именам классов
У меня проблемы с именами моих классов и сервисов правильно, когда задействованы утилиты и другие справочные классы.
Как бы вы структурировали следующее:
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
?
Я предполагаю, что у вашей службы есть контракт в интерфейсе, так что это будет указывать на основную / стандартную реализацию контракта на обслуживание.