【问题标题】:Is it acceptable to have types with the same name, in different namespaces?在不同的命名空间中具有相同名称的类型是否可以接受?
【发布时间】:2010-08-02 11:16:41
【问题描述】:

我在同一个代码库中看到 7 种类型都称为错误。这可以接受吗?

我的直觉认为,在不同的域上下文中具有相同名称的类型是可以的,但在处理“母解决方案”时,它会越来越容易产生歧义。

【问题讨论】:

  • @Ben-Aston:因为“应该”是主观的。

标签: namespaces naming


【解决方案1】:

如果它们在不同的命名空间中,那么这没关系 - 这就是命名空间的用途。如果命名空间处理系统的不同部分,为什么要将它们耦合在一起以使用共享的错误类型。如果命名空间因其他原因而耦合,那么您可能会争辩说它们可以共享相同的错误类型以共享代码。

【讨论】:

  • 我想这也取决于类型的目的。错误是非常通用的,如果需要不同的行为,可以说应该被子类化?
【解决方案2】:

就编译器而言,同名类型是完全合法的。然而,尽管编译器会很高兴地区分类型,只要引用和 using 语句明确,但这并不意味着对于阅读代码的程序员来说是明确的。

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

【讨论】:

    【解决方案3】:

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

    • 对特定类型的所有地点进行全局搜索可能会导致结果过多

    • 将其中一种类型移动到更顶级的组件以进行更广泛的重用可能会更难。

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

    【讨论】:

      猜你喜欢
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      • 2020-02-05
      • 2014-01-12
      • 2014-09-15
      • 2011-12-01
      • 1970-01-01
      相关资源
      最近更新 更多