我经常在命名空间和该命名空间中的类之间发生命名冲突,并希望知道处理此问题的最佳实践,除了添加随机前缀之外,首先使用这些名称是有意义的。 / p>
拥有Models.Technology命名空间似乎是有道理的,其中包含许多技术类(即武器,农业,回收技术)和一些相关接口。我还决定在Technology名称空间中使用一个技术抽象类,所有技术都来自该类。
然而,这迫使我使用这样的代码:
public Technology.Technology research(Technology.Technology tech) {...}
同样地:
public Building.Building build(int count) {...}
顺便说一下,我没有命名我的命名空间技术,因为我在其他地方使用该术语作为可用技术列表的包装器......
答案 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
它可能没有任何意义,但因为同样的规则总是适用,这意味着更少的混淆,并且除了那条规则之外没有必要记住太多。这只是我的偏好。我,我自己喜欢看起来神秘的东西,所以如果这不是你的风格 - 那么也许这个答案不适合你。
我希望这会有所帮助...至少......:)