如何避免为类及其命名空间使用相同的名称,例如Technology.Technology?

时间:2009-07-21 09:10:08

标签: c# naming-conventions namespaces

我经常在命名空间和该命名空间中的类之间发生命名冲突,并希望知道处理此问题的最佳实践,除了添加随机前缀之外,首先使用这些名称是有意义的。 / p>

拥有Models.Technology命名空间似乎是有道理的,其中包含许多技术类(即武器,农业,回收技术)和一些相关接口。我还决定在Technology名称空间中使用一个技术抽象类,所有技术都来自该类。

然而,这迫使我使用这样的代码:

public Technology.Technology research(Technology.Technology tech) {...}

同样地:

public Building.Building build(int count) {...}

顺便说一下,我没有命名我的命名空间技术,因为我在其他地方使用该术语作为可用技术列表的包装器......

5 个答案:

答案 0 :(得分:19)

如果没有更准确的指示,当您遇到此问题时,很难给您一些一般性建议。

但是当你在命名空间中有一个基类时,我会假设你有这个问题,其他类继承自它。如果是这种情况,您可以调用您的类BaseTechnology(基类)或AbstractBuilding(抽象类)或IAnimal(接口)。这甚至可以让您更清晰,因为您在类型名称中指定了一些重要的内容。

答案 1 :(得分:1)

那么,您的名称是否与 ns MyNamespace名称相同,或者您将名称命名为 c MyClasse。 我个人赞成命名命名空间,因为它不是你在代码中经常使用的东西。

您还可以使用TechnologyBase或AbstractTechnology来命名与命名空间名称冲突的主要抽象类,这是我建议保持最合乎逻辑的命名约定。

答案 2 :(得分:1)

一般的警察是命名您的命名空间“实体”或其他东西。

答案 3 :(得分:0)

另一个应对,只需在你工作的公司名称之后调用名称空间。

答案 4 :(得分:-2)

Technology.Tech

怎么样?

或:

HumanBeing.Human

或:

CocaCola.Coke?

我喜欢做的是有一个简单的规则。我在哪里使用单词的前两个字母,然后是该单词的最后两个字母,如:

Technology.Tegy

它可能没有任何意义,但因为同样的规则总是适用,这意味着更少的混淆,并且除了那条规则之外没有必要记住太多。这只是我的偏好。我,我自己喜欢看起来神秘的东西,所以如果这不是你的风格 - 那么也许这个答案不适合你。

我希望这会有所帮助...至少......:)