为什么要使用完全合格的名字?

l33*_*33t 2 .net c# vb.net namespaces

自从引入var关键字以来,为什么要使用为什么要使用完全限定名?

var有效地减少了变量声明的输入.因此,可以保持完整的声明而不会使代码膨胀.这让我很奇怪,为什么你甚至想宣布namespace使用?

// A lot of typing, but unambiguous.
System.Drawing.Point a = new System.Drawing.Point();

// using System.Drawing, Point possibly ambiguous.
Point b = new Point();

// using System.Drawing, Point possibly ambiguous.
var c = new Point();

// Less typing, still unambiguous.
var d = new System.Drawing.Point();
Run Code Online (Sandbox Code Playgroud)

这里的最佳做法是什么?

dsg*_*fin 13

命名空间只有几个原因才真正有用:

  1. 帮助区分具有相同名称的类
  2. 帮助将项目"结构化"为有意义的部分

正如Oded所提到的,这些原因本身就非常重要 - 虽然不常见,但模糊性并非不可能,在这种情况下使用命名空间是必要的.

了解更多关于命名空间的位置.

  • 实际上,这些都是非常好的"事物". (4认同)

tme*_*ser 9

这似乎更少关于命名空间,更多关于在代码中使用静态类型.我听说不使用的主要论点var延伸到通过浏览声明时变量类型不明显.请考虑以下代码:

var readyTasks = _config.GetTasks().Where(x => x.Ready);
Run Code Online (Sandbox Code Playgroud)

你究竟怎么知道它是什么readyTasksIEnumerable考虑到什么Where()回报是一个给定的,但除此之外,获取类型的唯一方法是鼠标悬停var并让Visual Studio为你揪出它.随着LINQ语句变得越来越长,这变得更加复杂,可以将枚举变为逻辑结构(如foreach循环),列表一直在继续.

var(我是其中之一)的支持者将反驳说var,从长远来看,这将是一件很小的事情,可以为您带来更少的麻烦.静态类型声明从来都不是程序员舒适性的考虑因素.它们首先是编译器.因此,仅仅因为你已经习惯了这个神器似乎没有意义.

  • 我强烈反对这一点.上面的代码需要一个类型引用.有时您必须快速查看文本中的代码,而无需在该PC上使用Visual Studio的工作副本."与var一起悬停"并不总是可用. (4认同)