在不同的命名空间中使用具有相同名称的类型是否可以接受?

时间:2010-08-02 11:16:41

标签: namespaces naming

我在同一个代码库中看到7种类型都叫做Error。这可以接受吗?

我的直觉说在不同的域上下文中使用相同名称的类型是可以的,但在处理“母解决方案”时,它会越来越模糊。

3 个答案:

答案 0 :(得分:3)

如果它们位于不同的命名空间中,那么这是正常的 - 这就是命名空间的用途。如果命名空间处理系统的不同部分,为什么它们应该耦合在一起以使用共享的错误类型。如果命名空间由于其他原因而耦合,那么您可能会认为他们可以共享相同的错误类型来共享代码。

答案 1 :(得分:2)

就编译器而言,相同命名的类型是完全合法的。但是,尽管编译器很乐意区分提供引用和使用语句的类型,但这并不意味着程序员阅读代码是明确的。

Error听起来它可能是Exception类的等价物,它是CLR异常类型层次结构的基础;这似乎是描述错误的好模型。也许您可以将错误类之间的常见行为拉出到一个名为Error的基类中,然后从中继承以生成更简洁或项目特定的子类。

答案 2 :(得分:1)

命名空间的想法是允许这个,在许多情况下,它是可以的。另一方面,它使一些事情变得更难

  • 全球搜索特定类型的所有地点可能会受到太多结果的影响

  • 将其中一种类型转移到更高级别的组件以进行更广泛的重复使用可能会更困难。

总之,恕我直言,这不是一个全有或全无的决定。每次为另一个名称空间中已存在的类型选择名称时,如果可能没有更好的名称,则应重新考虑一两秒,避免这种情况。