清洁代码应该为实体使用简短有意义的名称。因此,给定一个处理机器人的应用程序,我希望有一个类库Robot
,其名称空间Robot
具有类Robot
。让我们假设只有一个机器人对象,例如代码Hubot。
然而,naming a class name the same as its namespace is an extremely bad idea in C#。
避免命名空间和类型名称冲突的准则是什么?
具体来说,考虑到上面的情况,如果我想保留类名Robot
,我该如何命名命名空间?
答案 0 :(得分:6)
指南非常明确:System
之外的名称空间应为Company.Technology
。这样可以明确消除歧义,并使用户更容易发现哪些命名空间与哪些技术相关联。请记住,命名空间的主要目的不是避免冲突,而是开发人员的工作效率。
指南在这里:
http://msdn.microsoft.com/en-us/library/893ke618(v=vs.71).aspx
您的命名空间应该类似于:
namespace MrtsCorp.Robotics
{
public sealed class Robot
{
...
如果您想查看此类命名空间的合理模型,请尝试以下操作:
http://msdn.microsoft.com/en-us/library/dd159952.aspx
我对名称为Ccr
的名称空间感到兴奋,这些名称空间仅对域专家很明确,但Microsoft.Robotics.Simulation
非常具有描述性。
答案 1 :(得分:3)
最简单的解决方法是,如果你真的无法想出任何东西,就是调用命名空间Robots
。
答案 2 :(得分:1)
从Framework Design Guidelines on Names of Namespaces命名空间应采用以下格式:
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
所以既然这里的“公司”是Hubot
的开源项目团队,并且真的没有其他类别适用于此,那么对于您的示例,它将类似于:
namespace HubotDev.Hubot
{
public sealed class Robot
{
//...
}
}
用法是
Hubot.Robot robot = //...;
答案 3 :(得分:0)
取决于命名空间中的内容。命名空间必须描述其中的内容。如果你有一堆机器人类,那么命名机器人是一个好主意。如果你有一个机器人和一个机器人的部件,那么它可能是RobotEntities,RobotParts,Machine ......的名字......
也许你的机器人类没有正确命名,也许它是BaseRobot或EnemyRobot,......
答案 4 :(得分:-2)
许多可能的想法中的另一个是使用小写命名空间。
它并不常见,但有时这些名称用于命名空间。即使它不符合命名准则,整个场景也不是(它与CompanyName.TechnologyName[.Feature][.Design]
标准不匹配)。