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

Note2012-03-13

2014年11月13日 ⁄ 综合 ⁄ 共 1753字 ⁄ 字号 评论关闭

 

Effective C# 原则25: 让你的类型支持序列化
如果你的类型不支持序列化,那么对于你的用户来说,想再要实现实它是很困难或者
根本就不可能的事

但是要记住:只有当所有类型的对象图都支持序列化时才能成功
如果你的类型不支持序列化,那化其它使用这个类的类也不能序列。为了让使用类
的客户更加方便,尽可能的使用默认序列化特性,并且在默认的特性不满足时要实现ISerializable 接口。

Effective C# 原则26:用IComparable和IComparer实现对象的顺序关系

Effective C# 原则27:避免使用ICloneable

它同时支持深拷贝
和浅拷贝。浅拷贝是创建一个新的对象,这个新对象对包含当前对象中所有成员变量的拷贝。如果这些成
员变量是引用类型的,那么新的对象与源对象包含了同样的引用。而深拷贝则可以很好的拷贝所有成员变
量,引用类型也被递归的进行了拷贝。对于像整型这样的内置类型,深拷贝和浅拷贝是一样的结

一但你实现了ICloneable, 你就
强制要求所有派生类也必须正确的实现它

ICloneable接口有它的用武之地,但相对于它的规则来说,我们应该避免它。对于值类型,你不应该实现
ICloneable接口,应该使用赋值语句。对于引用类型来说,只有在拷贝确实有必要存在时,才在叶子类上实
现对ICloneable的支持。基类在可能要对ICloneable 进行支持时,应该创建一个受保护的构造函数。总而言
之,我们应该尽量避免使用ICloneable接口。

Effective C# 原则28:避免转换操作

Effective C# 原则29:仅在对基类进行强制更新时才使用new修饰符

Effective C# 原则30:选择与CLS兼容的程序集

Effective C# 原则31:选择小而简单的函数
实际上,C#编译器也不支持任何暗示来让JIT编译进行内联。你可以
做的就是确保你的代码尽可能的清楚,尽可能让JIT编译器容易的做出最好的决定。我的推荐现在就很熟悉
了:越小的方法越有可能成为内联对象。请记住:任何虚方法或者含有try/catch块的函数都不可能成为内联
的。
内联修改了代码正要被JIT的原则。再来考虑这个访问名字属性的例子:  

Effective C# 原则32:选择小而内聚的程序集

Effective C# 原则33:限制类型的访问
只暴露须要暴露的内容,应该通过尝试在类上实现公共接口来减少可见内

Effective C# 原则34:创建大容量的Web API

Effective C# 原则35:选择重写函数而不是使用事件句柄
Effective C# 原则36:利用.Net运行时诊断

Effective C# 原则37:使用标准的配置机制

Effective C# 原则38:使用和支持数据绑定

Effective C# 原则39:使用.Net验证

Effective C# 原则40:根据需求选择集合
访问多维数组时比访问锯齿数组要快得多,特殊是在列或者对角线上访问时。编译器在数组的每个维上是
使用的指针算法。锯齿数组则要为每个一维数组查找正确的(指针引用)值

。ArrayList基本上把所有责任都委托给了它所包含了数组
上,这就是说ArrayList类与数组类在性能上很接近。它的最大好处就是在你不清楚你的集合具体要多大
时,ArrayList类要比数组类好用得多。ArrayList可以随时扩展和收缩。但你还是要在移动和拷贝元素上有
性能损失,但这些算法的代码已经写好了而且经过了测试

队列和栈类在System.Array类上提供了特殊的接口。这些特殊的接口是自定义的先进先出的队列接口和后进
先出的栈接口。时刻记住,这些集合的内部存储都是基于数组

Effective C# 原则41:选择DataSet而不是自定义的数据结构

Effective C# 原则42:使用特性进行简单的反射

Effective C# 原则43:请勿滥用反射

Effective C# 原则44:创建应用程序特定的异常类

Effective C# 原则45:选择强异常来保护程序

Effecitve C# 原则46:最小化与其它非托管代码的交互

Effective C# 原则47:选择安全的代码

Effective C# 原则48:了解更多的工具和资源
第一个应该在每一个C#开发人员的工具箱的工具是NUnit,
接来下是FXCop

 

【上篇】
【下篇】

抱歉!评论已关闭.