代码之家  ›  专栏  ›  技术社区  ›  MrBoJangles hugomg

多余的限定词有什么坏处吗?有什么好处吗?

  •  2
  • MrBoJangles hugomg  · 技术社区  · 16 年前

    例如,将某物称为系统。数据。Datagrid,而不仅仅是Datagrid。请提供示例和解释。谢谢。

    7 回复  |  直到 10 年前
        1
  •  2
  •   Statement    16 年前

    好处是,您不需要为您使用的所有内容添加导入,特别是如果它是您从特定名称空间使用的唯一内容,它还可以防止冲突。

    当然,缺点是代码的大小会越来越大,而且使用的特定限定符越多,阅读起来就越困难。

    就我个人而言,我倾向于对大多数事情使用导入,除非我确定我只会使用来自特定命名空间的东西一两次,这样就不会影响我代码的可读性。

        2
  •  2
  •   Orion Adrian    16 年前

    你对所引用的类型非常明确,这是一个好处。虽然,在同一个过程中,你放弃了代码的清晰度,这在我的情况下显然是一个缺点,因为我希望代码是可读和可理解的。我选择简短的版本,除非我在不同的名称空间中有冲突,这只能通过显式引用类来解决。。除非我使用以下关键字为其创建别名:

    using Datagrid = System.Data.Datagrid;
    
        3
  •  2
  •   Daniel Bruce    16 年前

    实际上,完整的路径是 global::System.Data.DataGrid 使用更合格的路径的目的是避免使用额外的using语句,特别是在引入另一个use会导致类型解析问题的情况下。存在更多完全限定的标识符,以便在需要显式时可以显式,但如果类的命名空间是明确的,那么 DataGrid 版本对许多人来说更清晰。

        4
  •  2
  •   lesscode    16 年前

    我通常使用最短的形式,以保持代码尽可能干净和可读。毕竟,这就是使用指令的目的,VS编辑器中的工具提示为您提供了关于类型来源的即时详细信息。

    我还倾向于在COM互操作层中为RCW使用命名空间标记,以在代码中显式地调用这些变量(它们可能需要特别注意生命周期和集合),例如

    using _Interop = Some.Interop.Namespace;
    
        5
  •  2
  •   cruizer    16 年前

    就业绩而言,没有上行/下行。所有问题都在编译时解决,无论是否使用完全限定名,生成的MSIL都是相同的。

    为什么它的使用在中国很普遍。NET世界是因为自动生成的代码,如设计器标记。在这种情况下,最好像类名一样完全限定名称,因为可能会与代码中的其他类发生冲突。

    如果你有一个像ReSharper这样的工具,它实际上会告诉你哪些完全合格的引用是不必要的(例如,通过将它们变灰),这样你就可以删除它们。如果你经常在各种代码库中剪切粘贴代码,那么必须完全合格它们。(再说一次,为什么你总是想剪切粘贴;这是一种糟糕的代码重用方式!)

        6
  •  1
  •   Quintin Robinson    16 年前

    我认为这并没有什么缺点,只是可读性与实际编码时间相比。一般来说,如果你没有带有模糊对象的名称空间,我认为这并不是真的需要。另一个需要考虑的因素是使用水平。如果你有一种使用反射的方法,并且你对打字系统没有问题。反思10次,这没什么大不了的,但如果你打算经常使用一个命名空间,那么我建议你使用一个包含。

        7
  •  1
  •   bkane    16 年前

    根据您的情况,额外的限定符将生成警告(如果这就是您所说的冗余)。如果你将警告视为错误,那将是一个相当严重的缺点。

    例如,我在GCC中遇到过这种情况。

    struct A {
        int A::b; // warning!
    }