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

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远程交互时,最昂贵的开销是在两台远程机器之间进行对象传输时,所以要在两机器间的会话频率和会话时数据包的大小之间进行权衡。
 

转载于:https://www.cnblogs.com/happyhippy/archive/2007/04/08/704509.html

你可能感兴趣的:(Effective C# 摘录(4) - 创建二进制组件)