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