改善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()

 

          

 

  • 1
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

《Effective C++:改善程序与设计55具体做法(第3版)(中文版)(双色)》内容简介:有人说C++程序员可以分为两类,读过Effective C++和没读过。世界项级C++大师scott Meyers成名之作第三版确当得起这样评价。当您读过《Effective C++:改善程序与设计55具体做法(第3版)(中文版)(双色)》之后,就获得了迅速提升自己C++功力契机。, 在国际上,《Effective C++:改善程序与设计55具体做法(第3版)(中文版)(双色)》所引起反响,波及整计算机技术出版领域,余音至今未绝。几乎在所有C++书籍推荐名单上,《Effective C++:改善程序与设计55具体做法(第3版)(中文版)(双色)》都会位于前三名。作者高超技术把握力、独特视角、诙谐轻松写作风格、独具匠心内容组织,都受到极大推崇和仿效。这种奇特现象,只能解释为人们对这《Effective C++:改善程序与设计55具体做法(第3版)(中文版)(双色)》衷心赞美和推崇。, 这《Effective C++:改善程序与设计55具体做法(第3版)(中文版)(双色)》不是读完一遍就可以束之高阁快餐读物,也不是用以解决手边问题参考手册,而是需要您去反复阅读体会,C++是真正程序员语言,背后有着精深思想与无以伦比表达能力,这使得它具有类似宗教般魅力。希望这《Effective C++:改善程序与设计55具体做法(第3版)(中文版)(双色)》能够帮您跨越C++重重险阻,领略高处才有壮美风光,做一成功而快乐C++程序员。
相关推荐
1.高清中文版 2.高清英文版 3.随书源代码 目录: 第1章 引言 1 第2章 创建和销毁对象 4 第1条:考虑用静态工厂方法代替构造函数 4 第2条:使用私有构造函数强化singleton属性 8 第3条:通过私有构造函数强化不可实例化能力 10 第4条:避免创建重复对象 11 第5条:消除过期对象引用 14 第6条:避免使用终结函数 17 第3章 对于所有对象都通用方法 21 第7条:在改写equals时候请遵守通用约定 21 第8条:改写equals时总是要改写hashcode 31 第9条:总是要改写tostring 36 第10条:谨慎地改写clone 39 第11条:考虑实现comparable接口 46 第4章 类和接口 51 第12条:使类和成员可访问能力最小化 51 第13条:支持非可变性 55 第14条:复合优先于继承 62 第15条:要么专门为继承而设计,并给出文档说明,要么禁止继承 67 第16条:接口优于抽象类 72 第17条:接口只是被用于定义类型 76 第18条:优先考虑静态成员类 78 第5章 c语言结构替代 82 第19条:用类代替结构 82 第20条:用类层次来代替联合 84 第21条:用类来代替enum结构 88 第22条:用类和接口来代替函数指针 97 第6章 方法 100 第23条:检查参数有效性 100 第24条:需要时使用保护性拷贝 103 第25条:谨慎设计方法原型 107 第26条:谨慎地使用重载 109 第27条:返回零长度数组而不是null 114 第28条:为所有导出api元素编写文档注释 116 第7章 通用程序设计 120 第29条:将局部变量作用域最小化 120 第30条:了解和使用库 123 第31条:如果要求精确答案,请避免使用float和double 127 第32条:如果其他类型更适合,则尽量避免使用字符串 129 第33条:了解字符串连接性能 131 第34条:通过接口引用对象 132 第35条:接口优先于映像机制 134 第36条:谨慎地使用本地方法 137 第37条:谨慎地进行优化 138 第38条:遵守普遍接受命名惯例 141 第8章 异常 144 第39条:只针对不正常条件才使用异常 144 第40条:对于可恢复条件使用被检查异常,对于程序错误使用运行时异常 147 第41条:避免不必要地使用被检查异常 149 第42条:尽量使用标准异常 151 第43条:抛出异常要适合于相应抽象 153 第44条:每方法抛出异常都要有文档 155 第45条:在细节消息中包含失败-捕获信息 157 第46条:努力使失败保持原子性 159 第47条:不要忽略异常 161 第9章 线程 162 第48条:对共享可变数据同步访问 162 第49条:避免过多同步 168 第50条:永远不要在循环外面调用wait 173 第51条:不要依赖于线程调度器 175 第52条:线程安全性文档化 178 第53条:避免使用线程组 181 第10章 序列化 182 第54条:谨慎地实现serializable 182 第55条:考虑使用自定义序列化形式 187 第56条:保护性地编写readobject方法 193 第57条:必要时提供一readresolve方法 199 中英文术语对照 202 参考文献 207 模式和习惯用法索引 212 索引 214
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值