| 作者 |
| (美)比尔·瓦格纳(Bill Wagner) |
| 丛书名 |
| Effective系列丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787111597193 |
| 简要 |
| 紧贴C#语言的设计理念,既从正面阐释如何编写代码,又从反面入手指出容易出错之处,涵盖C#语言的各个方面 |
| 简介 |
| 内容简介书籍计算机书籍 在本书中,世界知名的 .NET 专家 Bill Wagner 先生给出了 50 条建议,告诉你怎样充分利用 C# 6.0 所具备的特性来编写健壮而高效的代码。这些建议反映了 C# 开发界的新进展,也令人体会到C# 这门语言已经越来越成熟了。除了提出了许多种改善代码品质的新方式,例如怎样发挥泛型的优势之外,本书还针对 LINQ 给出了很多条建议。 |
| 目录 |
| 本书赞誉 译者序 前言 第1章 C#语言的编程习惯1 第1条:优先使用隐式类型的局部变量1 第2条:考虑用readonly代替const8 第3条:优先考虑is或as运算符,尽量少用强制类型转换12 第4条:用内插字符串取代string.Format()20 第5条:用FormattableString取代专门为特定区域而写的字符串24 第6条:不要用表示符号名称的硬字符串来调用 API26 第7条:用委托表示回调28 第8条:用null条件运算符调用事件处理程序31 第9条:尽量避免装箱与取消装箱这两种操作34 第10条:只有在应对新版基类与现有子类之间的冲突时才应该使用 new修饰符38 第2章 .NET的资源管理42 第11条:理解并善用 .NET的资源管理机制42 第12条:声明字段时,尽量直接为其设定初始值47 第13条:用适当的方式初始化类中的静态成员50 第14条:尽量删减重复的初始化逻辑52 第15条:不要创建无谓的对象60 第16条:绝对不要在构造函数里面调用虚函数64 第17条:实现标准的dispose 模式67 第3章 合理地运用泛型74 第18条:只定义刚好够用的约束条件76 第19条:通过运行期类型检查实现特定的泛型算法82 第20条:通过IComparable及IComparer定义顺序关系88 第21条:创建泛型类时,总是应该给实现了IDisposable的类型参数提供支持95 第22条:考虑支持泛型协变与逆变98 第23条:用委托要求类型参数必须提供某种方法104 第24条:如果有泛型方法,就不要 再创建针对基类或接口的 重载版本110 第25条:如果不需要把类型参数所 表示的对象设为实例字段, 那么应该优先考虑创建泛 型方法,而不是泛型类114 第26条:实现泛型接口的同时,还 应该实现非泛型接口118 第27条:只把必备的契约定义在接 口中,把其他功能留给扩 展方法去实现124 第28条:考虑通过扩展方法增强已构造类型的功能128 第4章 合理地运用LINQ131 第29条:优先考虑提供迭代器方法,而不要返回集合131 第30条:优先考虑通过查询语句来编写代码,而不要使用循环语句137 第31条:把针对序列的API设计得更加易于拼接142 第32条:将迭代逻辑与操作、谓词及函数解耦149 第33条:等真正用到序列中的元素时再去生成153 第34条:考虑通过函数参数来放松耦合关系155 第35条:绝对不要重载扩展方法162 第36条:理解查询表达式与方法调用之间的映射关系165 第37条:尽量采用惰性求值的方式来查询,而不要及早求值177 第38条:考虑用lambda表达式来代替方法182 第39条:不要在Func与Action中抛出异常186 第40条:掌握尽早执行与延迟执行之间的区别188 第41条:不要把开销较大的资源捕获到闭包中193 第42条:注意IEnumerable与IQueryable形式的数据源之间的区别206 第43条:用Single()及First()来明确地验证你对查询结果所做的假设211 第44条:不要修改绑定变量214 第5章 合理地运用异常220 第45条:考虑在方法约定遭到违背时抛出异常220 第46条:利用using与try/finally来清理资源224 第47条:专门针对应用程序创建异常231 第48条:优先考虑做出强异常保证237 第49条:考虑用异常筛选器来改写先捕获异常再重新抛出的逻辑244 第50条:合理利用异常筛选器的副作用来实现某些效果248 中英文词汇对照表252 |