45.優先選擇強異常安全保證。
Prefer the Strong Exception Guarantee.
強異常保證狀態是指,如果一個操作因為某個異常中斷,程式維持原狀態不改變,不管操作是否完成,都不修改程式的狀態,這裡沒有折衷。強異常保證的好處是,你可以在捕獲異常後更簡單的繼續執行程式。終結器(Finalizers)、Dispose()以及委託目標是特殊的情況,它們中不應該出現因為異常而終止執行的情況。
實現強異常安全的三個步驟:(1)對可能要修改的資料進行被動式的拷貝;(2)在拷貝的資料上完成修改操作,其中包括任何可能異常異常的操作;(3)把臨時的拷貝資料與來源資料進行交換(這個操作決不能發生任何異常!)。
小心對參考型別進行交換操作,因為可能會引發大量潛在的BUG!
46.最小化互操作。
Minimize Interop。
互操作時有三個開銷:(1) 這在託管堆和非託管堆之間進行資料傳遞時的Marshal開銷;(2) 在Managed 程式碼和Unmanaged 程式碼進行之間互動的資料吞吐開銷;(3) 學習和使用這些技術的開銷。
如果要使用現有的用其它語言寫的COM對象,使用COM互動;如果要使用已有的C++代碼,使用/CLR開關並託管C++來提供來訪問已有的本地代碼;最省時的策略就是“just thro it out”!
47.優先選擇安全的程式碼。
Prefer Safe Code.
無論何時,都不要指標來訪問其它非託管或者託管的堆記憶體,以建立的安全程式集;只要可能,都應該避免訪問非託管記憶體和受保護資源(例如註冊表、檔案系統等)。
隔離儲存區 (Isolated Storage)(System.IO.IsolatedStorage)可以隔離基於程式集而獨立的虛擬目錄、應用程式定義域以及當前的使用者。受信任的程式集可以訪問他們自己的隔離儲存區 (Isolated Storage)區,但不能是檔案系統的其它地方。獨立的儲存區對其它程式集和其它使用者是隱藏的不可見的。
48.掌握相關工具與資源。
Learn About Tools and Resources.
單元測試工具:NUnit (http://www.nunit.org/);
程式碼分析工具:FXCop (www.gotdotnet.com,Visual Studio 2005整合);
IL反組譯碼器 :ILDasm(安裝.net framework時也安裝了該工具);
C# FAQ : http://blogs.msdn.com/csharpfaq
Asp.net開發 :www.asp.net
WinApp開發 :www.windowsforms.net
模式和實踐 :www.microsoft.com/resources/practices/
Sharee Source CLI:http://www.microsoft.com/downloads/details.aspx?FamilyId=8C09FD61-3F26-4555-AE17-3121B4F51D4D&displaylang=en
.net領域還有很多優秀的工具:Reflector、Regulator、NAnt、Snippet Compiler、等更多工具可以參考這裡:http://sharptoolbox.com/
49.為C#2.0做準備。
Prepare for C# 2.0.
50.瞭解ECMA標準。
http://www.ecma-international.org/publications/standards/Standard.htm
ECMA-334 C# Language Specification, 4th edition (June 2006) ISO/IEC 23270
ECMA-335 Common Language Infrastructure (CLI), 4th edition (June 2006) ISO/IEC 23271