代码之家  ›  专栏  ›  技术社区  ›  Jla

使用指令与完整路径名

  •  4
  • Jla  · 技术社区  · 14 年前

    是否有从其他命名空间引用类型的常规规则。您是否一贯使用:

    using System.Drawing;
    

    而不是在需要时定义它:

    System.Drawing.Graphics gr;
    

    当我只“调用”一次名称空间时,我倾向于键入完整的名称空间。这方面有什么最佳实践吗?

    7 回复  |  直到 14 年前
        1
  •  9
  •   James Curran    14 年前

    我使用的(以及我相信大多数开发人员使用的)是

    using System.Drawing; 
    

    储备

    System.Drawing.Graphics gr;
    

    只适用于与两个人有冲突的地方 Graphics 在不同的名称空间中定义,即使这样,我还是宁愿使用 using 要区分它们:

    using MyGraphics=My.Own.Conflicting.Named.Graphics;
    //  :
    var myGraph = new MyGraphics();
    
        2
  •  3
  •   Matt Greer    14 年前

    代码中完全限定的名称令人分心且嘈杂。我宁愿不吃。如果存在命名空间冲突,使用别名可以解决此问题。

    另外,让我们面对现实吧,99.99%的开发人员正在使用Visual Studio,因此了解类型的名称空间和/或程序集与F12一样快,或者只需鼠标悬停一秒钟。

    在代码中,我唯一喜欢完全限定名的时间是在代码示例中,就像在堆栈溢出中一样,来明确使用的是什么类型。

        3
  •  2
  •   kbrimington    14 年前

    我只避免 using 关于使用两个不同命名空间将导致命名冲突的条件的语句。

        4
  •  2
  •   Rob    14 年前

    一次打电话就可以变成,再打下去,打10次、20次或n次。我的经验法则是,C设计团队出于某种原因在语言中使用“using”,因此,如果你不介意双关语,我会使用它。

    例如,如果我正在编写以下代码:

    private System.Drawing.Drawing2D.HatchBrush GetHatchBrush()
    {
        System.Drawing.Color c = System.Drawing.Color.Red;
        System.Drawing.Drawing2D.HatchBrush h = new System.Drawing.Drawing2D.HatchBrush(System.Drawing.Drawing2D.HatchStyle.BackwardDiagonal, c);
    
        return h;
    }
    

    只使用 Color HatchBrush 有一次,我当然喜欢读:

    private HatchBrush GetHatchBrush()
    {
        Color c = Color.Red;
        HatchBrush h = new HatchBrush(HatchStyle.BackwardDiagonal, c);
    
        return h;
    }
    

    就个人而言,更好的是:

    private System.Drawing.Drawing2D.HatchBrush GetHatchBrush()
    {
        var c = Color.Red;
        var h = new HatchBrush(HatchStyle.BackwardDiagonal, c);
    
        return h;
    }
    

    正如James Curran所说,我唯一一次使用类的完整名称空间来完全限定类,而不是使用 using 当将一个namesapce引入作用域时会引入歧义。

        5
  •  1
  •   Henk Holterman    14 年前

    这里没有公认的最佳实践。
    用常识。这里唯一的目标是可读性。

    当一个相对罕见的类在代码中只使用一到两次时,请使用全名。

    对于大多数名称空间,尤其是经常使用的名称空间,将它们放在顶部的using指令中。

    在一些非常(非常)罕见的情况下,您需要使用创建别名,但这与这个问题没有真正的关系。

        6
  •  1
  •   heisenberg    14 年前

    当 我只打过一次电话。有 有什么最佳实践吗?

    通常我看到“使用”被使用,即使只调用一次,这似乎是标准(也是Resharper将推动您前进的方向,许多人倾向于喜欢他们的默认约定)

        7
  •  0
  •   Rui    14 年前

    如果你在模块中思考的话,你会更好地回答这个问题。

    这是一个你将有名称冲突的问题,如果你滥用或不滥用名称空间。

    如果您有一个专门用于图形的模块,比如说,如果该模块仅通过其接口使用,那么您甚至不会在该模块之外访问它。在这种情况下,您将使用在模块内部,这将是一个很好的理解,让我们说,你的手指也!