现在的位置: 首页 > 综合 > 正文

Effective C# 摘录(4) – 创建二进制组件

2013年02月05日 ⁄ 综合 ⁄ 共 958字 ⁄ 字号 评论关闭

30.尽可能实现CLS兼容的程序集。
   Prefer CLS-Compliant Assemblies。
   必须遵从两个规则:1.所有公共的和受保护的成员上的参数和返回值的类型都必须是与CLS兼容的[assembly:CLSCompliant(true)];2.其它不与CLS兼容的公共或者保护成员在其所定义的CLS兼容的对象必须存在同义成员(e.g:重载了operator+后,还要再定义一个同义的Add方法,以便在CLS兼容的程序集中使用Add方法)。

  
31.尽可能实现短小简洁的函数.
   Prefer Small, Simple Functions。
   C#编译器只是将C#代码编译成IL程序集,这些程序集必须在执行时经JIT进一步编译成能被CPU处理的本机代码才可以被执行。小函数可以非常容易被JIT编译器分期处理。小函数更有可能被候选内联。当然并不是足够小才行:简单的控制流程也是很重要的,JIT在处理函数内简单的控制分支时,可以更容易地用寄存器存储局部变量。方法越小越有可能被内联,任何虚方法或者含有try/catch块的函数都不可能被内联。

32.尽可能实现小而内聚的程序集.
   Prefer Smaller, Cohesive Assemblies.
   大程序集需要花更多的CUP时间来加载;分成小程序集可以使得程序启动时的开销被分期处理,但在程序集之间穿梭式,CLR要调整函数入口地址和进行安全验证(同一个程序集中的所有的代码具有相同的可信任级别)。C#/.Net的设计是以组件为核心思想的,我们构建程序集时也应该按照组件的思想来设计程序集的大小。

33.限制类型的可见性。
   Limit Visibility of Your Types。
   对于每个类型,在满足功能的情况下,应该尽可能的限制其可访问级别。通过在类上实现公共接口来减少可见内容,以暴露必须要暴露的内容。创建内部类(internal class,限制只能在该程序集内部可见)是经常使用的用于限制类型可见范围的方法。

34.创建大粒度的Web APIs。
   Create Large-Grain Web APIs。
   当你使用web服务,或者.Net远程交互时,最昂贵的开销是在两台远程机器之间进行对象传输时,所以要在两机器间的会话频率和会话时数据包的大小之间进行权衡。
 

抱歉!评论已关闭.