一个类是否应该与命名空间同名?

时间:2009-11-26 13:44:36

标签: .net naming-conventions namespaces class-design

我正在设计一个名称空间来容纳一组类,这些类将处理几个不同应用程序的用户相关任务。 (登录,验证等)

问题是命名空间将被称为Fusion.User但是它需要在该命名空间中有一个类来调用User

您是否应该拥有与命名空间同名的类?或者我在这里采取了错误的做法?

5 个答案:

答案 0 :(得分:1)

以与名称空间(包)相同的方式命名类可能会导致认为类是包的核心。但是,如果我得到正确的话,用户只是你案件中的一个数据对象。

据我所知,你有两个选择:

  1. 以不同方式命名您的姓名,例如Fusion.Security
  2. 对类名使用后缀表示其目的,例如UserDTO,UserAction等。

答案 1 :(得分:1)

命名空间是 Fusion.User
班级全名将是 Fusion.User.User

将它们保持不同是一种很好的做法,因为

  1. 避免与开发者混淆
  2. 在某些情况下看起来也很难看,就像我们使用两个用户一样。

    使用Fusion;
    命名空间xyz {
    公共类测试
    {
    User.User userObject {get; set;}
    }
    } <登记/> 所以更好的选择是使用不同的名称

答案 2 :(得分:1)

有些情况下使用相同名称会导致问题。立即想到的是在使用WCF服务时。当我最近在命名空间“companyName.someBehaviour”中使用名为“someBehaviour”的类来执行此操作以使用“MyService”时,编译器禁止我说someService在someBehaviour命名空间中不存在。将类名更改为不同的(并且非常有用)解决了这个问题并允许我编译程序集。

答案 3 :(得分:1)

答案 4 :(得分:0)

我可能会将名称空间称为“usertasks”以避免混淆。您将必须定期使用命名空间限定内部类,以避免混淆编译器。