加入RUN!PC粉絲團
最近新增的精選文章
 
最多人點閱的精選文章
 
 
精選文章 - 開發技術
分享到Plurk
分享到FaceBook
 
Visual Studio 2010「三螢一雲」開發平台 ─ 12大秘技之3
文/黃保翕、黃昭仁 2010/10/7 下午 04:52:31


相信你也有過類似的經驗,會不斷在監看式中對變數作新增、刪除的動作,在Visual Studio 2008開發環境中,雖然設計4個視窗可監看,但過多的變數出現時,往往還是會混亂,且不容易閱讀。

Visual Studio 2010貼心設計的DataTips功能,能將變數直接釘在螢幕上任一個角落,就如同把多個「監看式」中的變數,直接與程式碼所在位置做連結,這樣可以有效減低監看式的使用,而改以更直覺的方式將變數值顯示在畫面上。

例如,欲使用DataTips釘選,可以在程式執行到中斷點時,把滑鼠游標移動到變數上,就會跳出可供釘選的圖示。



此外,這些釘選的DataTips項目還提供註解能力,當你有多個需要監看時,可讓你更快速理解不同DataTips的用途。



輸入DataTips註解時還能輸出多行。



預設,DataTips可以任意移動位置,在移動的時候,會有一個小圖釘出現在螢幕左側,這代表以後這個DataTips框會固定出現在這個位置。當你螢幕上下移動時它也會跟著移動。



如果你想監看的變數是靜態物件或一些特別想一直監視的變數時,你可能會希望這個DataTips不要跟著程式碼捲動而改變位置,這時你就可以點選DataTips旁邊的「釘選」圖示,使其固定在視窗上。

這時螢幕左側的圖釘圖示也會跟著消失,代表這個DataTips不會跟著頁面跑了,如要改回原本的釘選模式只要再點一次釘選圖示即可。



如果你要讓多個運算式同時顯示在一個DataTips的話,也可以透過滑鼠右鍵功能表中選取「加入運算式」設定。



輸入變數名稱或運算式之後按下確定,即可新增上去並列顯示,這畫面基本上就是一個小型的監看式視窗,但又不像以往會固定佔用一大塊版面浪費空間!



與中斷點一樣,DataTips一樣可以進行匯入與匯出,若你設定的DataTips非常有用,那麼你或你的團隊也能將這些設定好的DataTips一併匯出給所有團隊成員使用!




你一定也很好奇,智慧型感知(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符號、左括號、空白鍵、分號、小數點。

在過去,Visual Studio VC++的版本中,智慧型感知精靈主要是透過專案建置時產生的(.ncb)檔案來進行,但是事實上,常常會有感知出來的資訊更新不即時,甚至有錯誤的情形發生。

在Visual Studio 2010中,以往的「.ncb」檔已消失,取而代之的是使用SQLCE(.sdf)檔案,來當作智慧型感知精靈的資料庫,除了讓感知出來的程式碼輸入提示更即時、正確之外,開發人員在程式碼編輯區中若要引用表頭檔案(.h),可以直接透過智慧型感知精靈的提示選取需要的檔案。



而且在撰寫程式碼的過程中,若輸入的程式碼語法不正確,程式碼不需要經過編譯,智慧型感知精靈直接就會在有問題的程式碼下方出現紅線,就有如一般我們在使用Word進行文字編寫時的拼字檢查功能,在匯整後的錯誤清單視窗中,也會立即產生對應的錯誤/警告訊息提示,是一個非常重要的改進,大大的提供了開發人員撰寫程式的效率!



還有個不得不提的部分,那就是越來越多人採用的測試導向開發模式(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建議的名稱。




VC++6.0就用得嚇嚇叫了,開發工具再升級能帶來什麼幫助?透過新的MFC函式庫,建立活潑生動的新世代視窗應用程式吧!

開發人員應該都知道,VC++ 6.0是過去Visual Studio 6.0時代的程式開發工具的典範之一,就算在今日,VC++ 6.0仍然廣泛使用於業界中,幾乎在各上市上櫃的電子公司中都有它的蹤影。

事實上,透過Visual Studio 2010的專案升級精靈的幫助,就可以讓原本使用VC++ 6.0的程式碼專案進行無痛升級。

在大部分的情況下,升級之後的程式碼只需要小修改,就可以順利編譯並執行。而升級過後的專案,可以取用Visual Studio 2010針對VC++加入的特色,其中最令人激賞的功能,如時下流行的多點觸控應用程式、酷炫的新世代使用者視窗介面,都可以透過最新的開發工具快速產生。

例如,開發人員可以直接透過MFC新增專案精靈,在不撰寫任何一行程式碼下,快速的建立出過去需要手工編輯大量程式碼的應用程式主架構。




開發專案被要求要依據測試導向開發模式執行,難道真的要先徒手寫完測試程式後,再開始寫專案程式?自動產生程式碼骨架的方式,就可以提供協助,但你知道怎麼做嗎?

測試導向開發模式(TDD)的精神,是依照實際的需求先撰寫測試程式再撰寫實際程式。在Visual Studio 2010提供一個非常強大而實用的功能!可依據類別的使用方式,自動產生類別與方法。覺得抽象難懂嗎?用個例子來帶領大家瞭解。

範例圖為一個單元測試方法,定義了一組尚未開發的NewsController類別,因此發生編譯失敗,可以將鍵盤游標停留在NewsController上,並按下「Ctrl + . 」鍵,這時會出現兩個下拉選單,分別是「產生 'NewsController' 的類別」與「產生新的型別」。



這兩個功能分別有不同的類別產生行為。產生NewsController類別,此功能會直接在同一目錄下建立NewsController.cs的類別檔,內容只有該類別的骨架而已;產生新的型別,此功能會提供更進階的對話框,讓你設定更仔細的類別宣告方式,例如在預設對話框中,可以設定存取(public或private)、類型(class、struct、interface、enum),或是指定新的型別要放置的專案與檔名。



而我們需要把類別建立在MvcApplication3專案的Controller目錄下,且必須宣告成public存取,於是設定的部分需稍作調整。



完成後你就會發現類別已經成功被建立,如此圖的程式碼片段。



接著還要產生類別的Index方法。同樣的,只要找到Index()並把鍵盤游標移到上方按下「Ctrl + .」,就會立即在類別裡產生方法的骨架:



請注意!要建立方法時,只有當方法有加上小刮號時才會顯示正確的智慧標籤(SmartTag),因為Visual Studio 2010會判斷你是如何使用這個Method,進而自動建立正確的方法骨架。如上述完成的NewsController類別,最後只要把Index方法寫完即可。



這種自動產生程式碼骨架的方式,對測試人員來說的確相當友善,若能搭配更多IntelliSense的開發技巧,更是如虎添翼,待操作方法上手後,相信你也會愛上!

Visual Studio 2010「三螢一雲」開發平台 ─ 12大秘技之1

Visual Studio 2010「三螢一雲」開發平台 ─ 12大秘技之2