7

干净的代码应该为实体使用简短、有意义的名称。因此,给定一个处理机器人的应用程序,我希望有一个类库项目Robot,其命名空间Robot有一个 class Robot。让我们假设只有一个机器人对象,例如Hubot的代码。

但是,在 C# 中将类名命名为与其命名空间相同是一个非常糟糕的主意

避免命名空间和类型名称冲突的准则是什么?

具体来说,考虑到上述情况,如果我想保留类名,我应该如何命名命名空间Robot

4

5 回答 5

9

指导方针非常明确:外部的命名空间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

我对名称CcrMicrosoft.Robotics.Simulation.

于 2013-09-13T18:34:01.597 回答
3

最简单的解决方法,如果你真的想不出任何东西,就是调用 namespace Robots

于 2013-09-13T18:13:51.733 回答
2

根据关于命名空间名称的框架设计指南,命名空间应采用以下格式:

<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]

因此,由于这里的“公司”是开源项目团队,Hubot并且实际上没有其他类别适用于此,那么对于您的示例,它将类似于:

namespace HubotDev.Hubot
{
    public sealed class Robot
    {
       //...
    }
}

用途是

Hubot.Robot robot = //...;
于 2013-09-13T18:35:22.260 回答
0

取决于命名空间中的内容。命名空间必须描述其中的内容。如果您有一堆机器人类,那么将其命名为 Robots 是个好主意。如果你有一个机器人和机器人的一部分,那么它可能是名称 RobotEntities、RobotParts、Machine ...

也许你的机器人类没有正确命名,也许它是一个 BaseRobot 或 EnemyRobot,......

于 2013-09-13T18:18:51.737 回答
-2

许多可能的想法中的另一个是对命名空间使用小写字母。

这并不常见,但有时此类名称用于命名空间。即使它不符合命名准则,整个场景也不符合(它不符合CompanyName.TechnologyName[.Feature][.Design]标准)。

于 2013-09-13T18:16:44.760 回答