随着业务的发展,Visual Studio所需要处理的问题也越来越复杂,这就使得一个解决方案中的代码数量 大大增加。一个代码文件,动辄上千行,数万行也是常见的事情。我们常常在编写新代码的时候,已经忘记了几天前,几周前,甚至几个月前写的代码是如何实现 的。当我们需要回顾以前的代码,参考其实现或是对其进行维护的时候,就需要我们在代码中进行查找(Find)和搜索(Search)。当然,Visual Studio作为一个成熟的开发工具,它的代码编辑器一开始就拥有了查找功能,同时还在后继的不断版本更新中,添加了很多高级的查找功能,比如支持通配 符,正则表达式等等。但是,查找功能始终都是进行“精确”的匹配。我知道,程序员们的记性都不太好,如果我们只对要查找的结果有个模糊的印象,那么查找起 来将比较困难。为了方便健忘的程序员们在纷繁的代码中进行快速地查找定位,Visual Studio 2010提供了“Quick Search” 功能。
我们注意到,新功能的名字是“Quick Search”而不是“Quick Find”,Search和Find的差别,就是你可以根据蛛丝马迹,只言片语进行“Search”,但是无法用这些信息进行“Find”。搜索,是一种模糊查找,一种更高形式的查找。
在Visual Studio 2010中,我们可以通过在任何代码文件中使用快捷键“Ctrl + ,”(Ctrl键加上逗号键)调出“Quick Search”窗口。
图1 “Quick Search”窗口
我们可以在搜索框中输入任意的字符作为搜索条件,Visual Studio就会替我们在项目中搜索相关联的符号,类型,成员名称等等,同时将搜索结果动态地显示在窗口下方的搜索结果列表中。我们可以不断地更换搜索条件,直到找到我们想要的结果为止。
光说不练,相信大家也不会有深刻的体会。下面我们就以一个实际的例子,来体验一下“Quick Search”的强大功能。为了简便,我们这里使用Visual Studio 2010 CTP虚拟机中自带的一个示例项目PeopleTrax。当然,我们也可以使用自己的项目。
找到虚拟机中的文件夹C:\Program Files\Visual Studio 10.0\Samples\1033\中的实例项目TeamDev Samples.zip,并把它解压缩到一个合适的文件夹。然后双击文件夹中的PeopleTrax/CS/PeopleTrax /PeopleTrax.sln解决方案文件,将这个解决方案在Visual Studio 2010中打开。
然后,在解决方案浏览器(Solution Explorer)中找到Persion项目中的person.cs代码文件,双击打开这个代码文件。这时,我们就可以使用快捷键“Ctrl + ,”打开“Quick Search”窗口。现在,我们想搜索前几个月我们写的一个用于获取人名的函数,关于这个函数,现在我们只记得这个函数的名字有“get”和“name” 这两个关键字,其他的信息全都忘记了。我们尝试着在“Quick Search”窗口中输入“get”,“Quick Search”就列出了所有含有“get”的变量,函数等等。
图2 “Quick Search”的搜索结果
如果够幸运,我们使用一个关键词就可以找到我们需要的内容,比如这里的GetNames()函数,就是我们想要的搜索结果。如果一个关键字的搜索结 果太多,不便于查找,我们还可以用空格间隔多个关键词进行复合搜索。这里,我们接着输入我们的第二个关键词“name”,这时搜索结果就非常清楚了。使用 向下键选中搜索结果,然后使用回车键,我们就可以直接跳转到相应的代码行。当然,直接用鼠标双击搜索结果,也可以跳转到相应的代码行。
图3 复合搜索
有了“Quick Search”,我们就再也不用担心陷入代码的汪洋大海了,也可以把我们有限的Memory用于记忆更加重要的东西,比如父母的生日,信用卡还款的日子等等。
当然,“Quick Search”也不是万能的。例如,它现在还无法像其他搜索引擎一样,使用AND、OR等运算符对关键字进行组合,同时它也无法对一个函数的内部实现进行 搜索,当我们要搜索一个消息框的字符串内容时,“Quick Search”就无能为力了。这时我们还是需要用到传统的查找功能。总之,“Quick Search”和“查找”可以配合使用,互相补充,缺一不可。
除了“Quick Search”功能,Visual Studio 2010还提供了两个用于在代码之间快速跳转的功能。其中一个是我们前面曾经介绍过的“调用继承树”,而另外一个就是非常实用的“引用高亮”。在代码文件 中,我们将光标停留在某个变量上,那么整个代码文件中,所有对此变量的引用都会高亮显示。这样,我们就比较清楚代码对这个变量做了什么操作,执行了什么动 作。当高亮显示引用后,我们还可以使用快捷键“Ctrl + Shift + Up/Down”在各个引用之间快速跳转。这个“引用高亮”的小功能在代码比较长,对一个变量的操作比较频繁的时候特别有用。
图4 引用高亮显示