我经常具有命名空间中的命名空间和类之间的命名冲突,并想知道处理这个最佳实践时,它似乎是有道理的首先使用这些名字,除了添加随机的前缀。
这似乎是有意义的有Models.Technology命名空间,与几十个技术类的(即武器,农业,循环利用技术),并在它的一些相关接口。 我也决定有技术抽象类,在技术命名空间,使所有技术派生。
然而,这迫使我用这样的代码:
public Technology.Technology research(Technology.Technology tech) {...}
同样地:
public Building.Building build(int count) {...}
顺便说我,因为我用这个词在其他地方可用技术的列表的包装没有我的名字命名空间技术...
如果没有,当你遇到这样的问题上更精确的迹象,很难给你一些一般性的建议。
但我会想,当你在你的命名空间有一个基类,你有这样的问题,与其他类都从它继承。 如果是这样的话,你可以打电话给你的类BaseTechnology(基类)或AbstractBuilding(抽象类)或IAnimal(接口)。 这甚至让你更清晰,因为你在你的类型的一些事情重要的名称来指定。
好吧,无论你的名字你的命名空间一样,NS myNameSpace对象或你的名字,你的C类MyClasse。 我personnaly赞成命名的命名空间,因为它不是你在代码中使用了很多东西。
您还可以使用TechnologyBase或AbstractTechnology与您的命名空间,这是我的建议,以保持最合理的命名约定的名字命名你的主要抽象类的冲突。
一个普遍虎头蛇尾是命名您的命名空间“实体”或什么的。
另一种应付了,只需调用命名空间你所工作的公司的名称后。
关于Technology.Tech什么
要么:
HumanBeing.Human
要么:
CocaCola.Coke?
我喜欢做的是有一个简单的规则。 当我用一个词,其次是字状的最后两个字母的头两个字母:
Technology.Tegy
它可能没有任何意义,但由于相同的规则始终适用,这意味着更少的混乱,而且也没有必要记住了,除了那一个规则。 这只是我的偏好。 我自己喜欢的事情,寻找神秘,所以如果这是不是你的风格 - 那么也许这个答案是不适合你。
我希望这有助于... ATLEAST有点... :)
文章来源: How to avoid having the same name for a class and it's namespace, such as Technology.Technology?