当前位置:  开发笔记 > 编程语言 > 正文

我应该同意禁止我的C#项目中的"使用"指令吗?

如何解决《我应该同意禁止我的C#项目中的"使用"指令吗?》经验,为你挑选了7个好方法。

我的同事坚持在代码中明确指定命名空间而不是使用using指令.换句话说,每次在代码中出现此类型时,他都希望为每种类型使用完全限定名称.就像是

public class MyClass
{
    public static void Main()
    {
        System.Console.WriteLine("Foo");
    }
}

代替:

using System;
public class MyClass
{
    public static void Main()
    {
        Console.WriteLine("Foo");
    }
}

你可以想象后果.

他给的职业选手:

    将代码复制并粘贴到其他源文件中更简单.

    它更具可读性(您可以立即看到名称空间).

我的缺点:

    我要写更多

    代码不太可读(我猜de gustibus non disputandum est)

    没有人这样做!

你怎么看待这件事?



1> Franci Penov..:

如果你需要复制和粘贴代码,以实际拥有完全合格的类型,那么你就会遇到更大的问题.

另外,您是否计划记住每个类所在的命名空间,以便能够完全限定它?



2> Marc Gravell..:

对于稍微不同的答案:LINQ.

扩展方法只能通过"using"语句获得.因此,查询语法或Fluent接口只能使用正确的"using"语句.

即使没有LINQ,我也会说使用"使用"......推断你能用更少的字符理解的越多越好.某些名称空间非常深,但不会为您的代码添加任何值.

还有其他扩展方法(不仅仅是LINQ)会受到同样的影响; 当然,你可以使用静态类,但流畅的界面更具表现力.



3> Robert Rossn..:

我怎么看待这个?

我想,谁都会拿出这样的想法,谁就会证​​明它自己有办法的人,很可能有一些关于C#语言和.NET开发其他基本误解.


例如:这样做的第一个原因 - 它使复制和粘贴代码更容易 - 本质上是说,"你应该承担大量的认知过载,完全限定你使用的每一种类型,因为它简化了经验丰富的C#程序员避免的任务就像瘟疫一样."

4> Ryan Lundy..:

在你的同事说"复制粘贴代码"的那一刻,他失去了所有可信度.



5> Kibbee..:

我发现不使用"using"指令的最大问题不在于实例化和类的定义.它是将值传递给在命名空间中定义的函数.比较这两段代码(VB.Net,因为这就是我所知道的,但是你得到了图片).

Module Module1

    Sub Main()
        Dim Rgx As New System.Text.RegularExpressions.Regex("Pattern", _
            System.Text.RegularExpressions.RegexOptions.IgnoreCase _
            Or System.Text.RegularExpressions.RegexOptions.Singleline _
            Or System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace)


        For Each result As System.Text.RegularExpressions.Match In Rgx.Matches("Find pattern here.")
            'Do Something
        Next
    End Sub

End Module

还有这个

Imports System.Text.RegularExpressions

Module Module1

    Sub Main()
        Dim Rgx As New Regex("Pattern", _
            RegexOptions.IgnoreCase _
            Or RegexOptions.Singleline _
            Or RegexOptions.IgnorePatternWhitespace)


        For Each result As Match In Rgx.Matches("Find pattern here.")
            'Do Something
        Next
    End Sub

End Module

在这种情况下,使用大量枚举,以及在for循环中内联声明变量,减少范围,在vb.Net的情况下不使用"使用"或"导入",可能导致可读性非常差.



6> Richard Harr..:

通过复制和粘贴更容易移动代码只是一个不合理的,并且很可能是潜在危险实践的警告信号.代码的结构和易读性不应该由易于编辑决定.

如果有的话,它会使代码更具可读性和更具体 - 我个人对标准对象所处的位置不感兴趣,它类似于以完整的名字对你的同事说话,并以工作场所的街道地址为前缀.

然而,有时候,它偶尔会使代码更具可读性,因此硬性和快速的规则不适用,只是常识.



7> Jesper Blad ..:

因为我们在C#中有一个工具用于自动设置using语句,按Ctrl + dot - 我看不出有任何理由不使用它.另一个"酷"的事情是:

想想你有两个命名空间:

ConsoleNamespace1

ConsoleNamespace2

两者都有一个Console类.现在,您可以使用一行代码更改对ConsoleNamespace2的所有引用 - 这很酷.

我的建议:using如果可以,请使用,如果必须,请使用.我不认为完全一个,如果更容易阅读.了解你的框架,这永远不会成为问题.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有