艾伟_转载:VS 2010 和 .NET 4.0 系列之《在VS 2010中查询和导航代码》篇

简介: 本系列文章导航VS 2010 和 .NET 4.0 系列之《ASP.NET 4 中的SEO改进 》篇VS 2010 和 .NET 4.0 系列之《干净的Web.Config文件 》篇VS 2010 和 .

本系列文章导航

VS 2010 和 .NET 4.0 系列之《ASP.NET 4 中的SEO改进 》篇

VS 2010 和 .NET 4.0 系列之《干净的Web.Config文件 》篇

VS 2010 和 .NET 4.0 系列之《起始项目模板》篇

VS 2010 和 .NET 4.0 系列之《多定向支持》篇

VS 2010 和 .NET 4.0 系列之《多显示器支持》篇

VS 2010 和 .NET 4.0 系列之《代码优化的Web开发Profile》篇

VS 2010 和 .NET 4.0 系列之《ASP.NET, HTML, JavaScript 代码片段支持》篇

VS 2010 和 .NET 4.0 系列之《自动启动ASP.NET应用》篇

VS 2010 和 .NET 4.0 系列之《在ASP.NET 4 Web Forms中实现URL导向》篇

VS 2010 和 .NET 4.0 系列之《在VS 2010中查询和导航代码》篇

VS 2010 和 .NET 4.0 系列之《VS 2010代码智能提示的改进》篇

VS 2010 和 .NET 4.0 系列之《添加引用对话框的改进》篇

VS 2010 和 .NET 4.0 系列之《内置图表控件》篇

  代码的查询和导航

  开发人员需要能够对正开发的代码库(code-base)进行轻松的导航,查询和理解。在我们做的可用性研究中,我们一般会发现较之于实际编写新的代码,开发人员会花更多的时间在阅读,检查和查询现有的代码上。

  VS 2010代码编辑器添加了一些非常棒的新特性,这些特性允许你更加高效地查询和导航代码库,允许你更轻松地理解代码在方案中是如何被使用的。

  对ASP.NET MVC源码进行查询和导航

  为这个博客贴子起见,我将使用ASP.NET MVC框架代码库(有好几千行代码)来帮助示范一些新的VS 2010查询和导航特性。如果你安装了VS 2010 Beta 2的话,你可以跟着我的示范,从这里下载并打开ASP.NET MVC框架源码。

  你应该会发现下面的特性对这个项目而言,速度非常快,尽管该项目有好几千行代码。我在下面示范的所有的特性目前都内置于VS 2010了(对所有的项目类型,以及对VB 和 C#都工作)。

  VS 2010 之“Navigate To (导航到)” 支持

  能够快速地找到代码,并导航到这些代码,无论对大的还是小的方案都很重要。

  Visual Studio 2010现在支持一个新的(Ctrl+逗号)的键盘快捷(即,控制键和逗号键同时按下)。当你按下(Ctrl+逗号)组合键时,一个新的VS 2010 “Navigate To(导航到)”对话框会出现,允许你快速地查询你的方案中的类型,文件,变量和成员,然后打开并且定位到这些东西上面:

  这个“Navigate To”对话框提供了一个快速的递增查询界面, 你一开始键入查询文字,结果就立刻显示出来。例如,键入“cont”(不用按回车),你就会看到随着你开始键入,176个结果立刻显示在结果列表中:

  再多键入几个字符,你就会看到列表自动过滤为那些匹配“controller”的结果:

  你可以使用卷动条卷动结果,或者也可以按tab键,然后使用光标箭头键(如果你不想把手移离键盘的话)。你会发现“Navigate To” 窗口列出了匹配你的查询文字的所有类型的结果, 包括类型名称,方法、属性名称,字段声明,以及文件名称:

  选择列表中的任意一个结果,会将相关的源码文件在VS 2010打开(如果还没有打开的话),立刻将你带到相关的源码位置(并且将其中的相关名称高亮显示):

  很棒的模糊查询功能

  “Navigate To”查询框还支持一些很棒的“模糊查询”功能,允许你做一些智慧的过滤和查询操作,而不必知道你正在查询的东西的确切名称。在对话框的递增/即查即显的查询界面中这些操作都工作良好,允许你改进你的查询,随着键入操作,就得到实时的结果。

  来试一下,让我们首先查询“cache”这个词。注意一下,查询结果中不光包括那些起先的字母为“cache”的项,而且也显示了那些包含“cache”这个词的结果:

  我们可以在查询文本框中加多个词,进一步过滤查询结果。例如,在下面,我对列表做了过滤,只包括那些名称中同时含有“cache”  “action” 的结果:

  .NET框架中的类型和成员用了一个命名设计指引模式叫“Pascal Casing”,即,类型或成员名称中每个词的第一个字母都是大写的。“Navigate To”对话框也允许你使用这个“Pascal Casing”约定来快速地过滤类型。只键入类型/成员名称的大写首字母,它就会立刻过滤列出匹配大写pascal命名约定的结果。

  例如,键入“AMS” 会过滤出下面的结果(只有那些名称中的词先以A起头,然后是以M起头,然后是以S起头的类型和成员):

  “Navigate To” 对话框允许你以最少的键击次数就能快速地过滤和定位代码,免去你不得不使用鼠标,打开解决方案管理器,然后直接点击文件的劳苦。

  查看调用的层次结构

  拥有快速查询和导航的能力固然是好,但要是能够快速地发现代码是怎么被使用的,那就更好了。VS 2010引进了一个新的“View Call Hierarchy (查看调用的层次结构)”的特性,允许你快速地发现你的代码库中的某个特定方法或属性是在何处被调用的,允许你快速地遍历(traverse)整个代码库的调用树形图(而不必运行或调试方案)。

  要用这个特性,只要选择你的代码库中的一个方法或属性名称,然后键入(Ctrl+K,Ctrl+T )快捷键组合,或者右击、然后选择“View Call Hierarchy”上下文菜单命令:

  这会调出一个新的“Call Hierarchy (调用的层次结构)”工具窗口,在默认情形下会在代码编辑器下方显示。在下面,你可以看到“Call Hierarchy”窗口显示了我们方案中的2个方法,它们调用了我们在上面选择了的 ViewPage.RenderView() 方法。

  然后,我们还可以向下钻取到第一个“RenderViewAndRestoreContentType”方法,进而看都是谁调用了它:

  对虚拟方法/属性,你还可以使用调用层次结构窗口看哪些类继承并覆盖了它们。

  双击“Call Hierarchy”窗口中的任意一个成员会打开相应的源码文件,立刻将你带到对应的源码位置:

  这允许你快速地在代码库中导航,在编写代码时,更好地理解类和方法间的关系。

  引用的高亮显示

  在VS 2010中,当你在代码编辑器中选择或高亮显示一个变量/参数/字段声明时,所有这些东西随后用到的地方都会在编辑器中为你自动地高亮显示,这方便你快速地识别一个变量或参数是在什么地方被使用的以及是如何使用的。

  例如,当我们在下面的编辑器中选择传到ControllerActionInvoker.GetParameterValue()方法中的“controllerContext” 参数时,注意在该方法中用了这个参数的4个地方现在都被自动高亮显示了:

  如果我选择该方法中的一个局部变量,用到了它的所有地方现在都被自动地高亮显示了:

  如果多个地方被高亮显示了,你可以使用(Ctrl-Shift-up箭头)键组合和(Ctrl-Shift-Down箭头键组合在它们之间来回循环,快速地将光标移到上一个或下一个高亮显示的字符上。

  结束语

  新的 VS 2010 文本编辑器方便了对项目或方案中的代码的快速查询,导航和探究。这些操作的速度非常之快(即使是在一个大的代码库内),而且随着你对项目进行改动,会保持更新,最终结果是使你的生产力大为提高。

  希望本文对你有所帮助,

  Scott

目录
相关文章
|
7月前
|
开发框架 JavaScript .NET
asp.net中条件查询+分页
asp.net中条件查询+分页
|
4月前
|
API
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
|
25天前
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。
|
1月前
|
敏捷开发 缓存 中间件
.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素
本文深入探讨了.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素,并通过企业级应用和Web应用开发的实践案例,展示了如何在实际项目中应用这些模式,旨在为开发者提供有益的参考和指导。
27 3
|
4月前
|
C# 开发者 Windows
在VB.NET项目中使用C#编写的代码
在VB.NET项目中使用C#编写的代码
64 0
|
2月前
|
设计模式 前端开发 C#
使用 Prism 框架实现导航.NET 6.0 + WPF
使用 Prism 框架实现导航.NET 6.0 + WPF
119 10
|
2月前
|
前端开发 JavaScript C#
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
CodeMaid:一款基于.NET开发的Visual Studio代码简化和整理实用插件
|
4月前
|
Kubernetes 监控 Devops
【独家揭秘】.NET项目中的DevOps实践:从代码提交到生产部署,你不知道的那些事!
【8月更文挑战第28天】.NET 项目中的 DevOps 实践贯穿代码提交到生产部署全流程,涵盖健壮的源代码管理、GitFlow 工作流、持续集成与部署、容器化及监控日志记录。通过 Git、CI/CD 工具、Kubernetes 及日志框架的最佳实践应用,显著提升软件开发效率与质量。本文通过具体示例,助力开发者构建高效可靠的 DevOps 流程,确保项目成功交付。
96 0
|
4月前
|
XML 开发框架 .NET
.NET框架:软件开发领域的瑞士军刀,如何让初学者变身代码艺术家——从基础架构到独特优势,一篇不可错过的深度解读。
【8月更文挑战第28天】.NET框架是由微软推出的统一开发平台,支持多种编程语言,简化应用程序的开发与部署。其核心组件包括公共语言运行库(CLR)和类库(FCL)。CLR负责内存管理、线程管理和异常处理等任务,确保代码稳定运行;FCL则提供了丰富的类和接口,涵盖网络、数据访问、安全性等多个领域,提高开发效率。此外,.NET框架还支持跨语言互操作,允许开发者使用C#、VB.NET等语言编写代码并无缝集成。这一框架凭借其强大的功能和广泛的社区支持,已成为软件开发领域的重要工具,适合初学者深入学习以奠定职业生涯基础。
117 1
|
4月前
|
API
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)