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  



本文转自Silent Void博客园博客,原文链接:http://www.cnblogs.com/happyhippy/archive/2007/04/11/710931.html,如需转载请自行联系原作者

相关文章
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
39 3
|
7天前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
43 12
|
1月前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
54 4
|
3月前
|
API C#
C# 一分钟浅谈:文件系统编程
在软件开发中,文件系统操作至关重要。本文将带你快速掌握C#中文件系统编程的基础知识,涵盖基本概念、常见问题及解决方法。文章详细介绍了`System.IO`命名空间下的关键类库,并通过示例代码展示了路径处理、异常处理、并发访问等技巧,还提供了异步API和流压缩等高级技巧,帮助你写出更健壮的代码。
54 2