書籍簡(jiǎn)介:
本書的作者,也是.NET專家Bill Wanger給出我們50條利用C#優(yōu)點(diǎn)以及特性來寫出健壯的,高效的,易于維護(hù)的代碼的高效法則。同時(shí),本書也反映出了C#語(yǔ)言愈發(fā)高級(jí)的特性以及關(guān)于它的開發(fā)社區(qū)。本書同時(shí)也給出了大量新穎的方法讓你能夠?qū)懗龈咝Э煽康拇a。*的第三版囊括了一些泛型和一些其他的語(yǔ)言集成查詢(LINQ),還包括了對(duì)異常高級(jí)實(shí)踐這一新的章節(jié)。
作者簡(jiǎn)介:
Bill Wagner是世界上最著名的C#開發(fā)者之一,是ECMA C#標(biāo)準(zhǔn)委員會(huì)的成員。他是Humanitarian Toolbox的主席,連續(xù)11年被授予Mcrosoft Regional Director和.NET MVP榮譽(yù)稱號(hào),最近剛剛被委派到.NET基礎(chǔ)顧問理事會(huì)任職。
出版日期:
2018年06月
章節(jié)目錄:
Chapter 1 C# Language Idioms ………………………………………………………… 1
Item 1: Prefer Implicitly Typed Local Variables ………………………………………………….. 1
Item 2: Prefer readonly to const …………………………………………………………………………. 7
Item 3: Prefer the is or as Operators to Casts ……………………………………………………… 12
Item 4: Replace string.Format() with Interpolated Strings ……………………………………. 19
Item 5: Prefer FormattableString for Culture-Specific Strings ……………………………… 23
Item 6: Avoid String-ly Typed APIs …………………………………………………………………. 26
Item 7: Express Callbacks with Delegates …………………………………………………………. 28
Item 8: Use the Null Conditional Operator for Event Invocations …………………………. 31
Item 9: Minimize Boxing and Unboxing …………………………………………………………… 34
Item 10: Use the new Modifier Only to React to Base Class Updates ……………………. 38
Chapter 2 .NET Resource Management ………………………………………….. 43
Item 11: Understand .NET Resource Management ……………………………………………… 43
Item 12: Prefer Member Initializers to Assignment Statements …………………………….. 48
Item 13: Use Proper Initialization for Static Class Members ………………………………… 51
Item 14: Minimize Duplicate Initialization Logic ……………………………………………….. 53
Item 15: Avoid Creating Unnecessary Objects …………………………………………………… 61
Item 16: Never Call Virtual Functions in Constructors ………………………………………… 65
Item 17: Implement the Standard Dispose Pattern ………………………………………………. 68
Chapter 3 Working with Generics ………………………………………………….. 77
Item 18: Always Define Constraints That Are Minimal and Sufficient ………………….. 79
Item 19: Specialize Generic Algorithms Using Runtime Type Checking ……………….. 85
Item 20: Implement Ordering Relations with IComparable<T> and IComparer<T> .. 92
Item 21: Always Create Generic Classes That Support Disposable Type Parameters . 98
Item 22: Support Generic Covariance and Contravariance …………………………………. 101
Item 23: Use Delegates to Define Method Constraints on Type Parameters …………. 107
Item 24: Do Not Create Generic Specialization on Base Classes or Interfaces ………. 112
Item 25: Prefer Generic Methods Unless Type Parameters Are Instance Fields ……. 116
Item 26: Implement Classic Interfaces in Addition to Generic Interfaces …………….. 120
Item 27: Augment Minimal Interface Contracts with Extension Methods ……………. 126
Item 28: Consider Enhancing Constructed Types with Extension Methods ………….. 130
Chapter 4 Working with LINQ …………………………………………………….. 133
Item 29: Prefer Iterator Methods to Returning Collections ………………. 133
Item 30: Prefer Query Syntax to Loops …………………………………………. 139
Item 31: Create Composable APIs for Sequences ……………………… 144
Item 32: Decouple Iterations from Actions, Predicates, and Functions … 151
Item 33: Generate Sequence Items as Requested …………………………. 154
Item 34: Loosen Coupling by Using Function Parameters……………….. 157
Item 35: Never Overload Extension Methods ………………………………… 163
Item 36: Understand How Query Expressions Map to Method Calls …………………… 167
Item 37: Prefer Lazy Evaluation to Eager Evaluation in Queries ………… 179
Item 38: Prefer Lambda Expressions to Methods …………………………… 184
Item 39: Avoid Throwing Exceptions in Functions and Actions …………. 188
Item 40: Distinguish Early from Deferred Execution ……………………… 191
Item 41: Avoid Capturing Expensive Resources ……………….. 195
Item 42: Distinguish between IEnumerable and IQueryable Data Sources …………… 208
Item 43: Use Single() and First() to Enforce Semantic Expectations on Queries …… 212
Item 44: Avoid Modifying Bound Variables ……………………….. 215
Chapter 5 Exception Practices ………………………………………………………. 221
Item 45: Use Exceptions to Report Method Contract Failures ………………. 221
Item 46: Utilize using and try/finally for Resource Cleanup……………….. 225
Item 47: Create Complete Application-Specific Exception Classes ……….. 232
Item 48: Prefer the Strong Exception Guarantee ……………………….. 237
Item 49: Prefer Exception Filters to catch and re-throw ……………….. 245
Item 50: Leverage Side Effects in Exception Filters ……………………….. 249
Index ……………………………………………………………………………………………. 253
封面圖: