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

本文转自Silent Void博客园博客,原文链接:http://www.cnblogs.com/happyhippy/archive/2007/04/08/704509.html ,如需转载请自行联系原作者
相关文章
|
前端开发 C#
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)
|
Web App开发 前端开发 .NET
基于ASP.NET MVC(C#)和Quartz.Net组件实现的定时执行任务调度
在之前的文章《推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler》和《简单、轻量、功能非常强大的C#/ASP.NET定时调度任务执行管理组件–FluentScheduler之实例篇》中,我们认识和了解了FluentScheduler这款轻量的定时任务调度执行组件。
2312 0
|
5月前
|
SQL 开发框架 前端开发
在C#开发中使用第三方组件LambdaParser、DynamicExpresso、Z.Expressions,实现动态解析/求值字符串表达式
在C#开发中使用第三方组件LambdaParser、DynamicExpresso、Z.Expressions,实现动态解析/求值字符串表达式
|
7月前
|
编解码 C#
C#使用PPT组件的CreateVideo方法生成视频
C#使用PPT组件的CreateVideo方法生成视频
|
前端开发 C# 开发工具
Unity快手上手【熟悉unity编辑器,C#脚本控制组件一些属性之类的】
Unity快手上手【熟悉unity编辑器,C#脚本控制组件一些属性之类的】
162 0
|
开发框架 缓存 安全
C#OOP之十三 组件、程序集与反射
C#OOP之十三 组件、程序集与反射
77 0
C#编程学习08:Spire Pdf组件的引用,以国际知名期刊OR为例
C#编程学习08:Spire Pdf组件的引用,以国际知名期刊OR为例
C#编程学习08:Spire Pdf组件的引用,以国际知名期刊OR为例
|
Kubernetes 网络协议 前端开发
使用 C# 开发 Kubernetes 组件,获取集群资源信息
使用 C# 开发 Kubernetes 组件,获取集群资源信息
282 0
使用 C# 开发 Kubernetes 组件,获取集群资源信息
|
IDE C# 开发工具
C# 动态加载组件后怎么在开发环境中调试
C# 动态加载组件后怎么在开发环境中调试 动态加载组件 那就是简单的Assembly.Load动态加载dll而以。这网上资料也有不少。基本的思路基本上就是在本地上一个指定目录如【plugs】存在着一堆dll文件。
1430 0
|
SQL 关系型数据库 C#
原创C#多数据库组件(SQL+Oracle+MySQL)及用户操作手册|CSFramework.DB.dll
C/S框架网为广大用户原创定制基于C#语言的多数据库组件包及用户操作手册。
2381 0