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 和 .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