命名空间和类名指南

时间:2011-09-07 08:40:08

标签: c# design-patterns namespaces directory-structure n-tier-architecture

在涉及utils和其他帮助类时,我正确地命名我的类和服务时遇到问题。

您将如何构建以下内容:

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,但当然已经有一个具有该名称的实体。

这是域模型。

2 个答案:

答案 0 :(得分:1)

您可以在单独命名空间中命名为例如多个服务中使用的验证程序(以及其他类)。 CommonValidators。
您可以更改EventService.cs的名称,而不是更改名称空间的名称 - 可能是Main.csDefault.cs?  我假设您的服务在接口中有合同,因此这将表明服务合同的主要/默认实现。

答案 1 :(得分:1)

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指南:Framework Design Guidelines