C# 名称空间和类名指南

C# 名称空间和类名指南,c#,design-patterns,namespaces,directory-structure,n-tier-architecture,C#,Design Patterns,Namespaces,Directory Structure,N Tier Architecture,当涉及UTIL和其他帮助类时,我在正确命名类和服务时遇到问题 您将如何构建以下内容: EventService.cs EventServiceUtils.cs EventServiceValidators.cs EventServiceCoordinator.cs 等等 我有多个与上述服务需求相同的服务。 一个想法是将所有这些内容分离到一个合适的名称空间中,使其看起来像这样: Services.EventService.EventService.cs //(the actual service

当涉及UTIL和其他帮助类时,我在正确命名类和服务时遇到问题

您将如何构建以下内容:

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%,因为其他服务中可能有更多的DateValidator,这很容易导致不必要的引用

而且Services.EventService.EventService.cs在名称空间中包含类名,这也不好。您可以使用Services.Event.EventService.cs,但当然已经有一个具有该名称的实体


这是域模型。

您可以将多个服务中使用的验证程序(和其他类)放在单独的名称空间中,例如CommonValidators。
您可以更改
EventService.cs
的名称,而不是更改命名空间的名称-可能是
Main.cs
Default.cs

我假设您的服务在接口中有一个契约,所以这将指示服务契约的主/默认实现

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指南可在以下位置找到: