我的同事坚持在代码中明确指定命名空间而不是使用using指令.换句话说,每次在代码中出现此类型时,他都希望为每种类型使用完全限定名称.就像是
public class MyClass
{
public static void Main()
{
System.Console.WriteLine("Foo");
}
}
Run Code Online (Sandbox Code Playgroud)
代替:
using System;
public class MyClass
{
public static void Main()
{
Console.WriteLine("Foo");
}
}
Run Code Online (Sandbox Code Playgroud)
你可以想象后果.
他给的职业选手:
我的缺点:
你怎么看待这件事?
Mar*_*ell 48
对于稍微不同的答案:LINQ.
扩展方法只能通过"using"语句获得.因此,查询语法或Fluent接口只能使用正确的"using"语句.
即使没有LINQ,我也会说使用"使用"......推断你能用更少的字符理解的越多越好.某些名称空间非常深,但不会为您的代码添加任何值.
还有其他扩展方法(不仅仅是LINQ)会受到同样的影响; 当然,你可以使用静态类,但流畅的界面更具表现力.
Rob*_*ney 37
我怎么看待这个?
我想,谁都会拿出这样的想法,谁就会证明它自己有办法的人,很可能有一些关于C#语言和.NET开发其他基本误解.
Kib*_*bee 19
我发现不使用"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
Run Code Online (Sandbox Code Playgroud)
还有这个
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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,使用大量枚举,以及在for循环中内联声明变量,减少范围,在vb.Net的情况下不使用"使用"或"导入",可能导致可读性非常差.
因为我们在C#中有一个工具用于自动设置using语句,按Ctrl + dot - 我看不出有任何理由不使用它.另一个"酷"的事情是:
想想你有两个命名空间:
ConsoleNamespace1
和
ConsoleNamespace2
两者都有一个Console类.现在,您可以使用一行代码更改对ConsoleNamespace2的所有引用 - 这很酷.
我的建议:using
如果可以,请使用,如果必须,请使用.我不认为完全一个,如果更容易阅读.了解你的框架,这永远不会成为问题.
归档时间: |
|
查看次数: |
2368 次 |
最近记录: |