對於C#以及.Net來說這是激動人心的時候。這些工具目前還是比較新的,整 個社區都在學習如何使用這些工具。一些資源可以幫助你提高你的知識,以及為 .Net和C#創建一個更大的知識社區。這些工具是我每天都向C#開發人員推薦的。 關於C#實踐的全部內容還在寫作當中,跟進它們而且不斷了解相關的內容。
第一個應該在每一個C#開發人員的工具箱的工具是NUnit, 它可以在 www.nunit.org網站上找到。NUnit是一個自動進行單元測試的工具,功能和 JUnit很像。和其它大多數開發人員一樣,我討厭寫測試代碼並且自己測試。 NUnit讓這些進程都變得很高效,在你有規律的使用這些工具後,可以保證你會 習慣測試你所有的C#類。不管什麼時候當我創建了一個類庫工程時,我都會添加 一個NUnit測試工程,而且把自動生成的測試做為一部分添加進來。我添加一個 以創建和運行測試的配置,這樣可以在每次編譯時進行測試。然後,我可以轉換 活動的配置來控制是否要讓單元測試做為正規程序的一部份存在。默認情況下, 我運行它們。當我須要進行UI測試時,我會轉換到另一個配置上。
在附帶的使用NUnit時,你可以通過檢測NUnit的源代碼學到一些有意思的技 術。NUnit使用一些高級的反射習慣來加載和測試你的程序集。它使用特性來查 找測試包,測試用例,以及每個測試用例的期望結果(參見原則42)。這是一個非 常不錯的例子,可以告訴你如何使用這些技術來創建可以自己動態配置的工具, 而且它可以廣泛的應用。
接來下是FXCop,這是一個免費的工具,可以從 GotDotNet(www.gotdotnet.com)上得到。FXCop 分析你的程序集裡的IL,看它是 否與實踐的原則相違背,以及報告這些違例的地方。每一個原則都有一個可靠的 公制規范,以及使用這一原則的原因。如本書裡所有推薦的原則一樣,一些文檔 中有一個關於某一原則的簡短理由。你可以斷定這些實際的問題是否遵守這些建 議。同樣你也可以配置是否把每一個原則都應用到項目中。我並不贊成FXCop 中 的一些原則,而且我在本書前面已經說明了原因。然而,像NUnit一樣,FXCop 可以成為你創建的正規程序的一部分。每次編譯後,可以有一個編譯後步驟,可 以用FXCop 來分析你選擇的原則。圖6.1展示了一個從FXCop裡輸出的例子。盡管 一些推薦並不是我喜歡的(例如有一個是讓每一個程序集應該是讓COM見的),但 它確實是一個有用的工具,因為它讓你思考很多你已經默認的決定。
圖6.1,FXCop分析的一個項目:
Figure 6.1. FXCop analyzing a project.
[View full size image]
ILDasm是一個IL反匯編器,在本書不同的地方,我已經演示了一些IL 代碼,它們就是編譯器為不同的C#結構生成的。盡管我不相信很多人會在有高級 語言存在的情況下,還選擇寫IL代碼,但你應該熟悉它。知道從不同的C#結構上 生成的IL代碼,可以幫助你成為一個更好的開發者。你可以為你自己的程序集檢 測IL代碼,或者是.Net框架裡的程序集。這就是使用ILDAsm,而且它是和.Net框 架的SDK一起發布的。IL對於所有開發者來說都是可用的。ILDAsm可以讓你看到 你的程序集的中間語言。不管怎樣,這是一個好的方法來學習.Net框架程序集, 這也是得到的原始資料。
這些只是你正式工具箱中的一部份,但擁有這 些工具只是提高你技能的一個方面。大量在線的資源以及交流社區可以讓你參與 和學習,以及增加你自己的C#和.net框架知識。首先也是最重要的就是 GotDotNet 網站(www.gotdotnet.com),這是.Net組的官方網站。C#小組在MSDN 上有一個站點,目前是在msdn.microsoft.com/vcsharp/ (它偶然在MSDN網站有 變動而被重新組織)。如果你的工作主要是基於網絡的,試著訪問www.asp.net, 這是為ASP.Net組提供的。如果你的工作主要是基於Windows Form的,試著看看 www.windowsforms.net,這是Windows Form組的官方網站。這些網站包含很多常 規編程的引用和實現,這些可能是你的應用程序中想要的。它們都是還源文件的 組件,所以你可以檢測和修改這些,讓它們成為你想要的。最後也是最重要的位 置應該要了解就是在MS模式和實踐的網頁。這個網頁目前在 www.microsoft.com/resources/practices/,從這個地方,你可以查到一些常用 的設計模式以及一些最好的模式的初始代碼。
而且這個地方經常更新一些新的例子的代碼以及庫,這可能幫助你解決常規 的編程問題。在寫這些時,你已經可以使用10個不同的應用程序塊來實現一些常 規的程序要求,我確信當你閱讀到這些時,這些地方已經有更多的內容了。
我還要推薦一些C#組的FAQ的訂閱:http://blogs.msdn.com/csharpfaq ,附帶的在這個上,有幾個C#組的成員用博客討論一些C#問題。你可以在這裡找 到最新的列表: http://msdn.microsoft.com/vcsharp/team/blogs/
如果你學習更多的而且對語言和環境想得到更深入的了解,你可以檢測共享 的CLI(code-named rotor)。這包含.net框架以及C#編譯器的一些核心內容。你 可閱讀這些資料來對C#語言的每一個功能和.Net框架得到更深入的理解。並不是 所有的.net商業框架都有可用的共享資料:例如,特殊的Windows代碼並沒有發 布共享代碼。然而,這些已經發布了的子集,同樣夠你學習更多的關於CLR和C# 語言內部的東西。
C#編譯器已經和共享的CLI資料一起發布,這是用C++ 寫的,它做為底層的CLR代碼存在。你須要對C++有很深的背景知識,以及對編譯 器設計有清楚的認識才能很好的理解它。現代的語言編譯器是復雜的軟件塊,但 CLR資料是一個有用的工具,來理解.Net框架的核心功能是如何實現的。
這裡只是給出了一個簡單的列表, 我只是在眾多資料中介紹了一個表面。很多 資料你都可以多MS上得到,或者其它在線網站,或者是書。你越是多的使用這些 工具,你就可以得到越多的知識。整個.Net以及C#社區是在前進的,因為它發展 的很快,這些列出的資源也可能不斷的在改變。你可以自己學習和自己寫稿。
返回教程目錄