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,如需转载请自行联系原作者

相关文章
|
6月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
198 3
|
6月前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
199 3
|
18天前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
30 3
|
1月前
|
安全 C# 数据安全/隐私保护
实现C#编程文件夹加锁保护
【10月更文挑战第16天】本文介绍了两种用 C# 实现文件夹保护的方法:一是通过设置文件系统权限,阻止普通用户访问;二是使用加密技术,对文件夹中的文件进行加密,防止未授权访问。提供了示例代码和使用方法,适用于不同安全需求的场景。
112 0