45.優先選擇強異常安全保證。
Prefer the Strong Exception Guarantee.
強異常保證狀態是指,如果一個操作因為某個異常中斷,程序維持原狀態不改變,不管操作是否完成,都不修改程序的狀態,這里沒有折衷。強異常保證的好處是,你可以在捕獲異常后更簡單的繼續執行程序。終結器(Finalizers)、Dispose()以及委托目標是特殊的情況,它們中不應該出現因為異常而終止執行的情況。
實現強異常安全的三個步驟:(1)對可能要修改的數據進行被動式的拷貝;(2)在拷貝的數據上完成修改操作,其中包括任何可能異常異常的操作;(3)把臨時的拷貝數據與源數據進行交換(這個操作決不能發生任何異常!)。
小心對引用類型進行交換操作,因為可能會引發大量潛在的BUG!
46.最小化互操作。
Minimize Interop。
互操作時有三個開銷:(1) 這在托管堆和非托管堆之間進行數據傳遞時的Marshal開銷;(2) 在托管代碼和非托管代碼進行之間交互的數據吞吐開銷;(3) 學習和使用這些技術的開銷。
如果要使用現有的用其它語言寫的COM對象,使用COM交互;如果要使用已有的C++代碼,使用/CLR開關并托管C++來提供來訪問已有的本地代碼;最省時的策略就是“just thro it out”!
47.優先選擇安全代碼。
Prefer Safe Code.
無論何時,都不要指針來訪問其它非托管或者托管的堆內存,以創建的安全程序集;只要可能,都應該避免訪問非托管內存和受保護資源(例如注冊表、文件系統等)。
獨立存儲(System.IO.IsolatedStorage)可以隔離基于程序集而獨立的虛擬的目錄、應用程序域以及當前的用戶。受信任的程序集可以訪問他們自己的獨立存儲區,但不能是文件系統的其它地方。獨立的存儲區對其它程序集和其它用戶是隱藏的不可見的。
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
浙公網安備 33010602011771號