摘要:VS 2010 和 .NET 4.0 系列之《在VS 2010中查詢和導航程式碼》篇
【原文地址】Searching and Navigating Code in VS 2010 (VS 2010 and .NET 4.0 Series)
【原文發表日期】 Wednesday, October 21, 2009 12:50 AM
這是我針對即將發佈的VS 2010 和 .NET 4所撰寫的 文章系列的第九篇。今天的部落格討論已經內建於VS 2010中的一些新的程式碼查詢和瀏覽特性。
程式碼的查詢和瀏覽
開發人員需要能夠對正在開發的程式進行輕鬆的瀏覽,查詢和理解。在我們做的可用性研究中,我們一般會發現較之於實際編寫新的程式碼,開發人員會花更多的時間在閱讀,檢閱和查詢現有的程式碼上。
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」(不用按 ENTER),你就會看到隨著你開始鍵入的文字搜尋出的 176 個結果立刻顯示在結果列表中:
再多鍵入幾個字元,你就會看到列表自動過濾為那些符合「controller」的結果:
你可以使用捲動條捲動結果,或者也可以按tab鍵,然後使用游標箭頭鍵(如果你不想把手移離鍵盤的話)。你會發現「Navigate To」 視窗列出了符合你的查詢文字的所有類別的結果, 包括類別名稱,方法、屬性名稱,程式碼宣告,以及檔案名稱:
選擇列表中的任意一個結果,會將相關的原始程式碼文件在VS 2010打開(如果還沒有打開的話),立刻將你帶到相關的原始程式碼位置(並且將其中的相關名稱反白顯示):
很棒的模糊查詢 (Fuzzy Search) 功能
「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
除了寫部落格外,最近我一直在使用Twitter發短貼和共享連結。你可以在Twitter上通過www.twitter.com/scottgu(@scottgu是我的twitter名) 追踪我的文章。
標籤: ASP.NET, Visual Studio, .NET, Community News