Effective C# 摘录(6) - 杂项讨论

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 
 

你可能感兴趣的:(C/C++/C#,.Net,Framework,学习笔记)