一些C# Best Practices
来源:互联网 发布:淘宝开店app 编辑:程序博客网 时间:2024/05/04 08:52
不论我们学习了多少.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)
...
不要锁住一个用户可见的对象。
- 一些C# Best Practices
- Best Practices for C# Exception Handling
- Best Practices -
- Web Services Best Practices
- JUnit best practices
- Javascript Best Practices
- CAB Best Practices
- 最佳实践(Best Practices)
- Java Database Best Practices
- LIVE Networking: Best Practices
- Scalability Best Practices
- Best Practices for WOW64
- Siebel Scripting Best Practices
- Javascript Best Practices
- Log4j Best Practices
- Best practices when developing
- Java Best Practices
- Siebel Scripting Best Practices
- MS-SQL数据库系统表的总结与应用
- files uploading
- 侯捷谈Java反射机制
- 如何学习Oracle-eygle的方法经验谈
- javascript 实现 radio 的联动
- 一些C# Best Practices
- DataAdapter的Update方法
- 关于win32程序如何使用mfcdll的问题.
- ADO与ADO.NET的区别
- ipcs命令
- 可怕的女人炒股手记曝光
- C#中调用SQL存储过程(带输入输出参数的例子)
- 怎么用数组做斐波那契数列?
- PCI数据传输卡的详细设计经历(基于PCI9054)之一