一些C# Best Practices

不论我们学习了多少.net理论,最终还是要体现在代码中,下面总结一些C#方面的Best Practices。对于一些常见的代码规定,例如,命名规则,这里就不重复了。

 

不好的代码:

1.重复

2.复杂,难以理解

3.效率低下

4.有bug

 

针对这几项,写代码时需要注意处理一下问题:

1.如何给包含switch的语句处理异常?

 bad:为每一个case语句都添加try catch语句,这样的代码看着很丑陋,而且逻辑不明晰。可以将异常捕捉代码放在switch外面,根据不同的处理分支,抛出不同的异常,这样的结构比较清晰。

 

2.如何重新抛出异常?

使用throw,而不是throw e。因为throw可以保留stack info。

 

3.不要随意的调用GC.Collect。因为调用GC.Collect去收集垃圾对象的开销很大,基本上,收集一个垃圾对象和收集一千个垃圾对象的效率是差不多的。所以,如果不是非常必要,不要手动调用该方法。

 

4.对于一些实现了IDisposable接口的对象,例如:StreamReader,记得使用using语句或者类似using功能的(就是try+finally)代码,保证异常发生时,也会释放这些对象的资源。

 

5.不要给局部变量赋null值(当然是引用类型对象了),除非我们确定在这个方法中很可能发生垃圾回收。

 

6.减少使用InvokeMember。这个方法的效率比较低下。可以使用接口。具体可以参阅Effective C#。

 

7.不要使用lock(this) 或者lock(typeof(<x>))这样的语句,使用一个私有变量来作为key,例如:

Object o = new Objec();

lock(o)

...

 

不要锁住一个用户可见的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值