今天介绍 Visual Studio 2010 内置的新特性——代码查找和导航特性。

查找和导航代码

开发人员需要能够容易地导航、查找和理解他们工作着的代码库(code-base)。我们发现开发人员花费了更多的时间阅读、复查(review)和查找现有代码,超过了编写新代码。

VS2010 的代码编辑器添加了一些良好的新特性,允许你更加有生产力地查找和导航代码库,并使你能够更容易地理解代码在解决方案中是如何被使用的。

查找和导航 ASP.NET MVC 源代码

本文我将使用 ASP.NET MVC 框架代码库(拥有数千行代码)来帮助演示VS2010的这些新的查找和导航特性。如果你安装了VS2010 Beta2,你就能够从这里下载和打开 ASP.NET MVC 框架源代码。

p_w_picpath

你应当会发现在使用这个项目下面的特性的性能确实很快,尽管拥有数千行的代码。下面我演示的所有特性都内置于 VS2010 中(而且为所有的项目类型,包括VB和C#工作)。

VS2010 的“导航到”(Navigate To)支持

对大解决方案和小解决方案来说,能够快速查找和导航代码都很重要。

VS2010 现在支持新的(Ctrl+逗号)键盘快捷键。当你按下(Ctrol+逗号)组合时,一个新的 VS2010 的“导航到”对话框会显示出来,允许你快速查找解决方案中的类型、文件、变量和成员,接着打开和导航到它们:

p_w_picpath

“导航到”对话框提供了快速递增的查找用户界面,结果会在你开始输入术语的时候立即出现。例如,输入“Cont”(不按回车)你就会看到176个结果立即显示在结果列表内:

p_w_picpath

输入更多的字符,你会看到列表自动地过滤出匹配“controller”的结果:

p_w_picpath

你能够使用滚动条滚动结果,或者按 tab 键然后使用光标键,如果你不想让双手离开键盘的话。你会发现“导航到”窗口列出了所有匹配术语的结果类型——包括类型名称、方法/属性名称、字段声明和文件名:

p_w_picpath

选择任何一个结果都会在VS2010内部打开相关的源文件(如果它还没打开的话),并帮你立即定位到相关的源位置(并在其中高亮相关的名称):

p_w_picpath

良好的模糊查找能力

“导航到”查找框支持良好的“模糊查找”能力,允许你执行聪明的过滤和查找,而不必确切地了解你正在查找的目标的名称。这些能力在增量的/即显的查找界面工作良好,并允许你提炼查找,在输入时获得实时结果。

为了尝试这个功能首先查找单词“cache”,注意查找结果不仅包含以单词“cache”开头的项,还显示任何在内部包含单词“cache”的结果:

p_w_picpath

我们能够添加多个单词到查找文本框来进一步过滤结果。例如,下面我们把列表过滤成只包含那些名称中同时包含“cache”和“action”的项:

p_w_picpath

.NET Frameowrk 中的类型和成员使用一种叫做“Pascal 大小写”的命名设计指南,即类型或成员的名称中的每个单词第一个字母都是大写的。“导航到”对话框允许你可选地使用这个“Pascal 大小写”约定快速地过滤类型。只要输入类型/成员名称的第一个字母,它就会自动地过滤出匹配大小写命名约定的结果。

例如,输入“AMS”将会过滤出下面的结果(只有那些以A、M和S开头的的单词组合表示的类型和成员):

p_w_picpath

“导航到”对话框允许你用最少的击键次数就能快速地过滤和定位代码,避免了使用鼠标、打开解决方案资源浏览器再单击文件的过程。

查看调用层次(Call Hierarchy)

拥有快速查找和导航到代码的能力是很棒的,还能快速地发现代码在哪里被使用就更棒了。VS2010 引入了新的“查看调用层次”特性,允许你快速地发现代码库的特定的方法或属性被谁所调用,并允许你快速地在代码库的调用树图(call tree graph)来回移动(而不必运行或调试解决方案)。

要使用这个特性,在代码库内选择方法或属性名,然后输入(Ctrl+K, Ctrl+T)键盘快捷键组合,或者右击选择“查看调用层次”上下文菜单命令:

p_w_picpath

这将弹出新的“调用层次”工具窗口,默认显示在代码编辑器之下。下面你会看到“调用层次”窗口是如何在解决方案内部显示两个调用了 ViewPage.RenderView() 方法的方法:

p_w_picpath

然后我们能够可选地深入挖掘到层次的第一个“RenderViewAndRestoreContentType”方法,来查看谁又调用了它:

p_w_picpath

对于虚拟方法/属性,你还能够使用调用层次窗口查看是什么类型的子类重写了它们。

在“调用层次”窗口内双击任何一个成员,都将打开恰当的源文件并帮你立即定位到源位置:

p_w_picpath

这样就允许你贯穿代码库快速地进行导航,并在编码时更好的理解类这方法之间的关系。

高亮的引用

使用VS2010,当你在代码编辑器内选择或高亮一个变量/参数/字段声明时,后面对它的使用都会在编辑内自动地为你高亮。这使得快速识别变量或参数正在哪里以及如何使用变得很容易。

例如,当我们在下面的编辑中选择传递给 ControllerActionInvoker.GetParameterValue() 方法的 "controllerContext" 参数时,注意在那个方法内部 4 个对它的使用是如何自动地高亮的:

p_w_picpath

如果在方法内部选择一个局部变量,所有使用它的地方也会自动高亮:

p_w_picpath

如果多处使用都高亮了,你就能够使用(Ctrl-Shift-上箭头)和(Ctrl-Shift-下箭头)组合键快速地在高亮的符号之间前后移动光标了。

总结

新的VS2010文本编辑器让快速查找、导航和浏览项目或解决方案中的代码变得容易。这些操作的性能非常地快(即使是大型代码库),并且在你工作在不断变化的项目上时也能保持最新(up to date)。这些都能让你更加有生产力。