首先推荐两个工具,一个是Resharper 一个是dotcover
- 代码应在注释较少的前提下能让别人读的懂,而不是只能让机器读的懂
- 如果自己都觉得自己写的代码丑,那么请您重构
- 尽可能的避免重复代码
- 必要的时候可以使用静态变量来保存查询出来的全局数据,建议将静态变量设置为只读的
- 区别对待静态变量和静态属性
- 静态属性中直接调用方法,不会带来性能的提升,而静态变量可以
- 谨慎使用可写的、非私有的静态变量或属性
- 代码的暴露程度尽可能的低(能用internal不用protected)
- 参数的数据类型尽可能的严格(比如能用int不用string)
- 局部变量的定义尽可能的和它的使用挨进,这样便于代码的重构
- 如果局域变量在使用之前参涉及到了代码逻辑中,应当它们重构为方法
- 如果代码中出现了嵌套的循环或条件判断,那么这段代码该重构了
- 建议使用using引入命名空间,而不是在声明对象的时候将命名空间写到声明里
- 移除未使用的using
- 重构时干掉多余的注释和注销掉的代码
- 无特殊情况建议一个方法最好不要超过30
- 必要的时候可以使用linq进行多个list的连结查询
- 尽量用List<T>来代替DataTable,这样在使用的过程中比较方便(通过点的方式可以直接访问属性),并且避免了过多的装箱、拆箱
public class User { public string Id{get;set;} public string Name{get;set;} } 写法一: void Main() { User u=default(User); List<User> users=new List<User>(); for(var i=0;i<100000;i++) { u=new User{Id=i.ToString(),Name=string.Format("{0}a",i)}; users.Add(u); } } 写法二: void Main() { List<User> users=new List<User>(); for(var i=0;i<100000;i++) { User u=new User{Id=i.ToString(),Name=string.Format("{0}a",i)}; users.Add(u); } } 可能很多人认为写法一的性能要高于写法二,其实不然,两种写法的IL代码是一样的,那么它们的性能必然一样
如有不对之处,请拍砖,并指正,谢谢!
待续