天涯一飘絮

导航

 

一、 属性的设计
不要提供只写属性,也不要设置方法的存取范围比获取范围更广
 
要为所有的属性提供合理的默认值,这样可以确保默认值不会导致安全漏洞或者效率低下的代码
 
要允许用户以任何顺序来设置属性值,即使这可能会使对象在短时间内处于无效状态
 
避免在属性的获取方法中抛出异常
属性获取应该是一个简单的操作,不应该有任何前置条件。如果一个获取属性的操作会抛出异常,那么我们很有可能应该把它重新设计为方法。
二、 构造函数设计
 
有两种类型的构造函数:类型构造函数和实例构造函数
类型构造函数是静态的,CLR会在使用该类型之前就运行他,实例构造函数是在类型的实例创建时运行。
 
类型构造函数不能带任何参数,实例构造函数则可以,不带任何参数的实例构造函数同样称为默认构造函数
 
要把构造函数的参数用作设置主要属性的便捷方法。
 
要使用相同的名字命名构造函数参数和属性,如果构造函数参数用于简单的设置属性。
这些参数和对应的属性之间的区别应该仅仅是大小写。
 
要在构造函数中做最少的工作
 
要在实例构造函数中抛出异常,如果合适的话
要注意,当构造函数抛出异常时,虽然new操作符并不会返回对象的引用,单事实上对象已经创建了。如果类型定义了Finalize方法,那么垃圾回收器在回收对象时会调用该方法。这意味着我们应该确保构造的对象也能运行Finalize方法。
另一种选择是,在构造函数内部调用GC.SupperssFinalize方法,这样可以避免调用Finalize方法并提高性能

 

public aaa()
{
try{}
catch
{
           GC.SuppressFinalize(this);
           throw
}
}
要在类中显示的声明公有的默认构造函数,如果这样的构造函数是必须的。
通常定义带参数的构造函数后,系统会自动取消帮你添加默认构造函数。如果之前没有显示添加默认构造函数,那么之后添加带参数的构造函数就会出现混乱。
 
避免在结构中显示的定义默认构造函数
避免在构造函数中调用虚成员

类型构造函数规范

类型构造函数也称为静态构造函数,用来初始化类型。运行库会在创建类型的第一个实例或访问类型的任何静态成员之前调用静态构造函数
要把静态构造函数声明为私有的
用户无法控制和室调用静态函数,如果静态函数不是私有的,那么CLR之外的代码就可以调用它,它取决于构造函数中执行的操作,这可能会导致意外的行为。
 
不要在静态函数中抛出异常
 
考虑以内联的形式来初始化静态字段,而不要显示的定义静态构造函数,这是因为运行库能够对那些没有显示定义构造函数的类型进行性能优化。

 

posted on 2009-01-15 10:57  冰云  阅读(179)  评论(0编辑  收藏  举报