改善C#代码的50个有效方法...持续更新

最近刚买了本书:“Effective C#  改善C#代码的50个有效方法”,边看边更新文章,第一次写这类文章,有什么措词请多多包涵;

第一章、编程习惯

 第一条:优先使用隐式类型的局部变量

                隐式类型的局部变量是为了支持匿名类型机制而加入C#语言。另一个原因在于:某些查询操作所获得结果是IQueryable<T>,而其他一些则返回IEnumberable<T>。如果硬要把前者当成后者来对待,那就无法使用由IQueryProvider所地宫的很多增强功能了;

                用var去做局部变量声明,而不用指明类型,可以让开发者把注意力更多的集中在命名上,从而更好的去来了解其含义;不过按照书中介绍,是优先使用隐式类型,而不是总用,据实际情况而定。过多使用var做声明原因如下:1.会使其他开发人员不明白就声明类型是什么类型,难以阅读,可能会导致不必要的bug产生,当然你也可以在注释中写明;2.会使某些转换令精准度降低; 如:int,float,double等数值型变量,可以明确指出其类型,其他都可以试试使用var来声明;如果你选用不合适的类型,那么程序的效率就有可能降低,这样做不如让编译器自动去选择。

 第二条:考虑用readonly(运行时常量)代替const(编译时常量)

            在很多BBS上看到,建议使用readonly和const,同时也指出了区别。而不是用readonly 去代替const;

            首先两者区别:

           1.const:只能用来表示:数据类型(又称:基元类型)、枚举、字符串;readonly:使用类型不受限制,可以是任何类型;

           2.const:可以在class(类)、struct(结构体)、方法体内进行声明;readonly:只能在class和struct中声明,方法体中无法进行声明(如在方法体中进行声明会报错误信息:错误 CS0106 修饰符“readonly”对该项无效  );

          3.const的性能比readonly好,但readonly比const更加灵活,因为readonly类型不受限制,同时readonly可以用来声明实例级别的常量,以便给同一个类的每个实例设定不同的常量值,而const是则是静态常量。

         为什么书中说考虑用readonly代替const,const关键字用来声明那些必须要编译时得以确定的值,例如attribute的参数、switch case语句的标签、enum的定义等,偶尔还用来声明那些不会随着版本而变化的值。除此之外的值应该考虑声明成更加灵活的readonly常量。不过不管是用const还是readonly都需要开发人员在使用命名参数与可选参数时,自己去权衡。

   第三条:优先考虑 is 或 as 运算符,尽量少用强制类型转换

       1、两者都是在运行时进行类型的转换,as操作符只能使用在引用类型,而is可以使用值和引用类型;

  2、 通常可以先通过is判断该操作是否合理,然后再使用as运算符或执行强制类型转换。

      使用面向对象语言来编程时,应尽量避免类型转换操作,但总有些场合是必须转换类型的。采用is及as运算符来更能清晰的表达代码的意图。

第四条:用内插字符串取代string.Format()

 

          

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值