Visual Studio 2010 操作技巧系列 (10):使用 IntelliSense 建議模式


IntelliSense 已經很好用了,為什麼在 Visual Studio 2010 又要多新增一個建議模式 (Suggestion mode)呢?難道以前的完成模式 (Completion Mode) 不好用嗎?不去深思背後的初衷真的很難體會這個建議模式的美妙之處,但在講解 IntelliSense 這兩個模式的差異之前,必須先教各位IntelliSense在使用時的細節,這樣你才能體會 Suggestion mode 實用的地方。

IntelliSense 在使用的時候其實非常直覺,如下圖示,當各位輸入 Page.User.Is 之後出現 IntelliSense 視窗且已選取在 IsInRole 方法上時,你接下來會輸入什麼按鍵來完成輸入呢?是 TAB 鍵還是直接輸入左括號呢?都有可能對吧!

如下圖示,當各位輸入 Page.User.I 之後出現 IntelliSense 視窗且已選取在 Identity 屬性上時,你接下來會輸入什麼按鍵來完成輸入呢?是空白鍵、分號還是小數點呢?都有可能對吧!

是的!就是這樣用,在使用 IntelliSense 時當偵測到鍵盤輸入以下字元時就會自動完成輸入:

  • TAB 符號
  • 左括號
  • 空白鍵
  • 分號
  • 小數點

測試導向開發模式(TDD)已經越來越多人採用,而 TDD 有一個很大的特性是在程式開發的過程中經常是以先寫測試程式再寫實際程式,意思也就是說在寫測試程式時可能連被測試類別中根本都還沒定義要被測試的方法,這種情況下由於 IntelliSense 只能讓你選用「已經定義」的方法,而當你輸入完一個不存在的方法並按下左括號完成輸入時卻會被 Visual Studio 替換成被選中的方法名稱,然後還要手動修改成原本要測試的這個不存在的方法名稱,這樣的開發過程對採用 TDD 開發模式的人來說是很惱人的。

使用 IntelliSense 建議模式可以先用 CTRL+ALT+SPACE 快速鍵切換過去,我們以下圖為例,如果你切換到建議模式的話,你會看到在 IntelliSense 視窗最上方會重複你輸入的方法名稱,這就是「IntelliSense 建議模式」最明顯的特徵。

如上程式為例,我們要新寫一個 DataClear 方法的測試案例,但是在 AuthorProfile_Accessor 類別中還沒有 DataClear 這個方法,所以再輸入 DataClear 之後雖然還是會有一個框線停留在最接近的 DataDelete 項目上,但是當切換到建議模式後 IntelliSense 機制就只會「建議你」有哪些選項,而不會強迫你選擇一個方法名稱來完成輸入。

這時你可以直接輸入左括號完成輸入,如下圖示,這時 IntelliSense 就不會雞婆的幫你替換成 DataDelete(),而是完整保留你原本輸入的 DataClear() 方法名稱,而這就是 IntelliSense 建議模式適合 TDD 的地方。

不過,如果你希望在 IntelliSense 建議模式能像完成模式一樣輸出建議的名稱有以下方法:

  • 直接按下 TAB 鍵
  • 使用滑鼠點選建議項目
  • 使用鍵盤方向鍵選取適當的項目,如下圖示,原本中空的框選項目會變成實心的光棒,這時就會如同完成模式一樣不管你輸入左括號空白鍵分號小數點都會輸出 IntelliSense 建議的名稱。