首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免一个类和它的命名空间同名,比如Technology.Technology?

如何避免一个类和它的命名空间同名,比如Technology.Technology?
EN

Stack Overflow用户
提问于 2009-07-21 09:10:08
回答 5查看 4.1K关注 0票数 20

我经常遇到命名空间和该命名空间中的类之间的命名冲突,我想知道除了添加随机前缀之外,当首先使用这些名称似乎有意义时,解决这个问题的最佳实践。

似乎有一个Models.Technology命名空间是有意义的,它有几十个技术类(即.武器,农业,回收技术)和一些相关的接口。我还决定在Technology名称空间中创建一个Technology抽象类,所有技术都从这个抽象类派生。

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

代码语言:javascript
复制
public Technology.Technology research(Technology.Technology tech) {...}

同样的:

代码语言:javascript
复制
public Building.Building build(int count) {...}

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-21 09:14:36

当你遇到这个问题时,如果没有更准确的提示,就很难给你一些一般性的建议。

但我假设您在名称空间中有一个基类,而其他类继承自该基类时,您会遇到这个问题。如果是这种情况,您可以将您的类称为BaseTechnology (基类)、AbstractBuilding (抽象类)或IAnimal (接口)。这甚至让你更加清晰,因为你在你的类型的名称中指定了一些重要的东西。

票数 19
EN

Stack Overflow用户

发布于 2009-07-21 09:16:58

不管你是像nsMyNamespace那样命名你的命名空间,还是你命名你的类cMyClasse。我个人倾向于命名命名空间,因为它不是你在代码中经常使用的东西。

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

票数 1
EN

Stack Overflow用户

发布于 2009-07-21 09:18:45

一种常见的解决办法是将您的命名空间命名为“实体”或其他名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1158092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档