干净的代码应该为实体使用简短、有意义的名称。因此,给定一个处理机器人的应用程序,我希望有一个类库项目Robot
,其命名空间Robot
有一个 class Robot
。让我们假设只有一个机器人对象,例如Hubot的代码。
但是,在 C# 中将类名命名为与其命名空间相同是一个非常糟糕的主意。
避免命名空间和类型名称冲突的准则是什么?
具体来说,考虑到上述情况,如果我想保留类名,我应该如何命名命名空间Robot
?
干净的代码应该为实体使用简短、有意义的名称。因此,给定一个处理机器人的应用程序,我希望有一个类库项目Robot
,其命名空间Robot
有一个 class Robot
。让我们假设只有一个机器人对象,例如Hubot的代码。
但是,在 C# 中将类名命名为与其命名空间相同是一个非常糟糕的主意。
避免命名空间和类型名称冲突的准则是什么?
具体来说,考虑到上述情况,如果我想保留类名,我应该如何命名命名空间Robot
?
指导方针非常明确:外部的命名空间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
.
最简单的解决方法,如果你真的想不出任何东西,就是调用 namespace Robots
。
根据关于命名空间名称的框架设计指南,命名空间应采用以下格式:
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
因此,由于这里的“公司”是开源项目团队,Hubot
并且实际上没有其他类别适用于此,那么对于您的示例,它将类似于:
namespace HubotDev.Hubot
{
public sealed class Robot
{
//...
}
}
用途是
Hubot.Robot robot = //...;
取决于命名空间中的内容。命名空间必须描述其中的内容。如果您有一堆机器人类,那么将其命名为 Robots 是个好主意。如果你有一个机器人和机器人的一部分,那么它可能是名称 RobotEntities、RobotParts、Machine ...
也许你的机器人类没有正确命名,也许它是一个 BaseRobot 或 EnemyRobot,......
许多可能的想法中的另一个是对命名空间使用小写字母。
这并不常见,但有时此类名称用于命名空间。即使它不符合命名准则,整个场景也不符合(它不符合CompanyName.TechnologyName[.Feature][.Design]
标准)。