More Effective C#中文版:写出良好C#程式的50个具体做法

点击数:4 借阅数: 2

作者:Bill ; Wagner作 ; 陈开煇 ; 孙天佑译

出版社:碁峰资讯

出版年:2018

出版地:台北市

格式:PDF

ISBN:978-986-476-861-5 ; 986-476-861-1

内容简介
 
涵盖C# 7.0
 
在《More Effective C# 中文版 第二版》中,世界知名的.NET专家Bill Wagner指出并解说50个特定强大与效能良好的C# 7.0中高级技巧。针对可能遇到的问题,提出强而有力的新解法,以因应越来越复杂的C#语言与日渐庞大的开发社群。
 
历经三个版本的《Effective C#》,Wagner清楚的解释、专业的建议与实际范例程式码,已被证明对成千上百位开发者而言是无价的。《More Effective C#,第二版》以经过验证的相同方式介绍C# 7.0新功能,协助你更有效率地执行熟悉工作。
 
基于卓越的C#经验,以及在全球C#标准委员会的关键性角色,Wagner强调以物件导向、函数式及服务导向的方式,以C#处理资料、以更好的方式向使用者与其他程式设计师表达您的用意、以及运用强大的非同步与动态程式设计。
 
‧使用属性取代可存取的资料成员(做法1)
‧区分实质与参考型别(做法4)
‧了解多种相等概念之间的关系(做法9)
‧在你的API中避免转换运算子(做法11)
‧了解介面与virtual methods之间差异(做法15)
‧避免在基底类别中定义方法多载(做法19)
‧建立清楚的、最少的、以及完整的方法群(做法22)
‧在iterators 及async方法中使用区域函式启动立即错误回报(做法26)
‧非同步工作中使用async方法(做法27)
‧避免执行绪配置与context switches(做法30)
‧建构有考虑例外情况的平行演算法(做法36)
‧使用执行绪区集取代建立执行绪(做法37)
‧使用BackgroundWorker做跨执行绪通讯(做法38)
‧了解动态程式设计的利弊(做法43)
‧了解如何运用expression API(做法46)
‧在公开的APIs中减少动态物件的使用(做法47)
 
你已经是一位成功的C#程式设计师,本书会使你更为出色。

作者简介
 
Bill Wagner
 
Bill Wagner 是世界最顶尖的C#开发者之一。他是ECMA C#标准委员会的成员,并且是所有三个版本的《Effective C#》的作者。他是Humanitarian Toolbox的总裁、曾被委任为Microsoft Regional Director、当选11年的.NET MVP。最近并受.NET Foundation Advisory Council委任。Wagner曾协助的公司包括新创公司到大型企业,以改善开发过程与建立开发团队。现在作为Microsoft .NET Core内容团队的成员,创作开发者C#语言及.NET Core的训练教材。

  • 前言(第9页)
  • 作法 01 使用属性取代可存取的资料成员(第15页)
  • 第 1 章 处理资料型别(第15页)
  • 作法 02 可变动的资料优先使用隐藏属性(第22页)
  • 作法 03 实值型别优先使其具不可变性(第26页)
  • 作法 04 区分实值与参考型别(第32页)
  • 作法 05 确保 0 是实值型别的有效状态(第37页)
  • 作法 06 确保属性运作如资料一般(第41页)
  • 作法 07 使用 Tuples 限制型别的范围(第47页)
  • 作法 08 在匿名型别上定义区域函式(第52页)
  • 作法 09 了解多种相等概念之间的关系(第57页)
  • 作法 10 了解 GetHashCode() 的陷阱(第66页)
  • 作法 11 在你的 API 中避免转换运算子(第73页)
  • 第 2 章 API 设计(第73页)
  • 作法 12 使用选择性引数减少方法的多载(第77页)
  • 作法 13 限制型别的可见性(第81页)
  • 作法 14 优先定义并实作介面进行继承(第85页)
  • 作法 15 了解介面与 Virtual Method 之间差异(第93页)
  • 作法 16 为通知实作事件模式(第97页)
  • 作法 17 避免传回内部类别物件的参考(第103页)
  • 作法 18 优先使用 Override 替代 Event Handler(第107页)
  • 作法 19 避免在基底类别中定义方法多载(第109页)
  • 作法 20 了解事件如何增进物件之间执行期的耦合(第114页)
  • 作法 21 只宣告 Nonvirtual Event(第116页)
  • 作法 22 建立清楚的、最少的,以及完整的方法群(第122页)
  • 作法 23 部分类别的建构函式、更动子与 Event handler 使用部分方法(第128页)
  • 作法 24 避免使用 ICloneable,因为它限制你的设计选择(第133页)
  • 作法 25 Array 引数限制只使用 params 阵列(第138页)
  • 作法 26 在 Iterators 与 Async 方法中使用区域函式启动立即错误回报(第142页)
  • 作法 27 非同步工作使用 Async 方法(第147页)
  • 第 3 章 以 Task 为基础的非同步程式设计(第147页)
  • 作法 28 永远不要写 async void 方法(第151页)
  • 作法 29 避免结合同步与非同步方法(第157页)
  • 作法 30 避免执行绪配置及 Context Switches(第161页)
  • 作法 31 避免非必要的封送处理(Marshalling)Context(第163页)
  • 作法 32 使用 Task 物件合成非同步工作(第167页)
  • 作法 33 考虑实作 Task 取消协定(Task Cancellation Protocol)(第173页)
  • 作法 34 缓冲扩充的非同步回传值(第180页)
  • 作法 35 学习 PLINQ 如何实作平行演算法(第183页)
  • 第 4 章 平行处理(第183页)
  • 作法 36 建构有考虑例外情况的平行演算法(第195页)
  • 作法 37 使用执行绪区集取代建立执行绪(第200页)
  • 作法 38 使用 BackgroundWorker 做跨执行绪通讯(第206页)
  • 作法 39 了解 XAML 环境中的跨执行绪呼叫(第210页)
  • 作法 40 使用 lock() 作为同步处理的首选(第218页)
  • 作法 41 锁定 Handles 使用最小可能的范围(第225页)
  • 作法 42 避免在锁定的区段呼叫不明的程式码(第229页)
  • 作法 43 了解动态程式设计的利弊(第233页)
  • 第 5 章 动态程式设计(第233页)
  • 作法 44 透过动态型别运用泛型引数执行期的型别(第242页)
  • 作法 45 资料驱动(Data-Driven)动态型别使用 DynamicObject 或 IDynamicMetaObjectProvider(第245页)
  • 作法 46 了解如何运用 Expression API(第256页)
  • 作法 47 在公开的 API 中减少动态物件的使用(第262页)
  • 作法 48 寻求最好的答案,而不是最受欢迎的答案(第269页)
  • 第 6 章 参与全球 C# 社群(第269页)
  • 作法 49 参与规格及程式码的订定(第271页)
  • 作法 50 考虑用分析器自动化惯用法(第272页)
  • 索引(第274页)