Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 3rd edition
BRAND: PEARSON
Publisher: | Addison-Wesley Professional |
Author: | Krzysztof Cwalina; Jeremy Barton; Brad Abrams |
Edition: | (June 18, 2020) © 2020 |
eBook ISBN: | 9780135896327 |
Print ISBN: | 9780135896464 |
Type: | 1 Year Subscription. Dành cho Cá nhân |
eBook edition. 1 Year Subscription. Dành cho Cá nhân | Trường ĐH, Nhóm, Thư Viện: Gọi 0915920514 để báo giá Pearson, Vital Source eBook hoặc mua Sách In
See what in the box
Mô tả sản phẩm
Nguyên tắc thiết kế khung từ lâu đã là hướng dẫn chính xác về các phương pháp hay nhất để phát triển các thành phần và thư viện thành phần trong Microsoft .NET. Giờ đây, ấn bản này đã được sửa đổi hoàn toàn để phản ánh những đổi mới trong thiết kế API mang tính thay đổi trò chơi do Microsoft giới thiệu thông qua tám bản cập nhật gần đây cho C#, 11 bản cập nhật cho .NET Framework cũng như sự xuất hiện và phát triển của .NET Core.
Ba kiến trúc sư hàng đầu của Microsoft chia sẻ cùng một hướng dẫn mà các nhóm Microsoft đang sử dụng để phát triển .NET, nhờ đó, bạn có thể thiết kế các thành phần hoạt động tốt giống như các tiện ích mở rộng tự nhiên cho nền tảng. Dựa trên phong cách giải thích đã được chứng minh của cuốn sách, các tác giả và chuyên gia chú thích đưa ra hướng dẫn nội bộ về các khái niệm .NET và C# mới, bao gồm những tiến bộ lớn trong lập trình không đồng bộ và truy cập bộ nhớ nhẹ. Xuyên suốt, chúng làm rõ và làm mới nội dung hiện có, giúp bạn tận dụng tối đa các phương pháp hay nhất dựa trên C# 8, .NET Framework 4.8 và .NET Core.
Khám phá những phương pháp nào nên luôn luôn, nói chung, hiếm khi hoặc không bao giờ được sử dụng—bao gồm cả những phương pháp không còn được khuyến nghị nữa
Tìm hiểu triết lý chung và các nguyên tắc cơ bản của thiết kế khung hiện đại
Khám phá các mẫu thiết kế khung phổ biến với các ví dụ C# cập nhật
Áp dụng các phương pháp hay nhất về đặt tên, loại, khả năng mở rộng và ngoại lệ
Tìm hiểu cách thiết kế các thư viện có quy mô trên đám mây
Nắm vững các kỹ thuật lập trình async mới bằng cách sử dụng Task và ValueTask
Tận dụng tối đa các loại Bộ nhớ lõi và Khoảng cách để truy cập bộ nhớ nhẹ
Figures xvii
Tables xix
Foreword to the Third Edition xxi
Foreword to the Second Edition xxiii
Foreword to the First Edition xxv
Preface xxvii
Acknowledgments xxxiii
About the Authors xxxv
About the Annotators xxxvii
Chapter 1: Introduction 1
1.1 Qualities of a Well-Designed Framework 3
Chapter 2: Framework Design Fundamentals 9
2.1 Progressive Frameworks 12
2.2 Fundamental Principles of Framework Design 15
Chapter 3: Naming Guidelines 41
3.1 Capitalization Conventions 42
3.2 General Naming Conventions 52
3.3 Names of Assemblies, DLLs, and Packages 61
3.4 Names of Namespaces 63
3.5 Names of Classes, Structs, and Interfaces 67
3.6 Names of Type Members 74
3.7 Naming Parameters 79
3.8 Naming Resources 81
Chapter 4: Type Design Guidelines 83
4.1 Types and Namespaces 85
4.2 Choosing Between Class and Struct 89
4.3 Choosing Between Class and Interface 92
4.4 Abstract Class Design 100
4.5 Static Class Design 102
4.6 Interface Design 104
4.7 Struct Design 106
4.8 Enum Design 111
4.9 Nested Types 124
4.10 Types and Assembly Metadata 127
4.11 Strongly Typed Strings 129
Chapter 5: Member Design 135
5.1 General Member Design Guidelines 135
5.2 Property Design 158
5.3 Constructor Design 165
5.4 Event Design 175
5.5 Field Design 180
5.6 Extension Methods 184
5.7 Operator Overloads 192
5.8 Parameter Design 202
5.9 Using Tuples in Member Signatures 220
Chapter 6: Designing for Extensibility 227
6.1 Extensibility Mechanisms 227
6.2 Base Classes 242
6.3 Sealing 244
Chapter 7: Exceptions 249
7.1 Exception Throwing 254
7.2 Choosing the Right Type of Exception to Throw 260
7.3 Using Standard Exception Types 273
7.4 Designing Custom Exceptions 279
7.5 Exceptions and Performance 281
Chapter 8: Usage Guidelines 287
8.1 Arrays 287
8.2 Attributes 291
8.3 Collections 294
8.4 DateTime and DateTimeOffset 306
8.5 ICloneable 308
8.6 IComparable<T> and IEquatable<T> 309
8.7 IDisposable 311
8.8 Nullable<T> 311
8.9 Object 312
8.10 Serialization 319
8.11 Uri 321
8.12 System.Xml Usage 323
8.13 Equality Operators 324
Chapter 9: Common Design Patterns 329
9.1 Aggregate Components 329
9.2 The Async Patterns 339
9.3 Dependency Properties 365
9.4 Dispose Pattern 372
9.5 Factories 394
9.6 LINQ Support 400
9.7 Optional Feature Pattern 408
9.8 Covariance and Contravariance 412
9.9 Template Method 423
9.10 Timeouts 426
9.11 XAML Readable Types 427
9.12 Operating on Buffers 430
9.13 And in the End... 464
Appendix A: C# Coding Style Conventions 465
A.1 General Style Conventions 466
A.2 Naming Conventions 480
A.3 Comments 482
A.4 File Organization 483
Appendix B: Obsolete Guidance 487Appendix C: Sample API Specification 523
Appendix D: Breaking Changes 529
D.1 Modifying Assemblies 530
D.2 Adding Namespaces 531
D.3 Modifying Namespaces 532
D.4 Moving Types 532
D.5 Removing Types 533
D.6 Modifying Types 534
D.7 Adding Members 539
D.8 Moving Members 541
D.9 Removing Members 542
D.10 Overloading Members 544
D.11 Changing Member Signatures 545
D.12 Changing Behavior 553
D.13 A Final Note 556
Glossary 557
Index 563
Nguyên tắc thiết kế khung từ lâu đã là hướng dẫn chính xác về các phương pháp hay nhất để phát triển các thành phần và thư viện thành phần trong Microsoft .NET. Giờ đây, ấn bản này đã được sửa đổi hoàn toàn để phản ánh những đổi mới trong thiết kế API mang tính thay đổi trò chơi do Microsoft giới thiệu thông qua tám bản cập nhật gần đây cho C#, 11 bản cập nhật cho .NET Framework cũng như sự xuất hiện và phát triển của .NET Core.
Ba kiến trúc sư hàng đầu của Microsoft chia sẻ cùng một hướng dẫn mà các nhóm Microsoft đang sử dụng để phát triển .NET, nhờ đó, bạn có thể thiết kế các thành phần hoạt động tốt giống như các tiện ích mở rộng tự nhiên cho nền tảng. Dựa trên phong cách giải thích đã được chứng minh của cuốn sách, các tác giả và chuyên gia chú thích đưa ra hướng dẫn nội bộ về các khái niệm .NET và C# mới, bao gồm những tiến bộ lớn trong lập trình không đồng bộ và truy cập bộ nhớ nhẹ. Xuyên suốt, chúng làm rõ và làm mới nội dung hiện có, giúp bạn tận dụng tối đa các phương pháp hay nhất dựa trên C# 8, .NET Framework 4.8 và .NET Core.
Khám phá những phương pháp nào nên luôn luôn, nói chung, hiếm khi hoặc không bao giờ được sử dụng—bao gồm cả những phương pháp không còn được khuyến nghị nữa
Tìm hiểu triết lý chung và các nguyên tắc cơ bản của thiết kế khung hiện đại
Khám phá các mẫu thiết kế khung phổ biến với các ví dụ C# cập nhật
Áp dụng các phương pháp hay nhất về đặt tên, loại, khả năng mở rộng và ngoại lệ
Tìm hiểu cách thiết kế các thư viện có quy mô trên đám mây
Nắm vững các kỹ thuật lập trình async mới bằng cách sử dụng Task và ValueTask
Tận dụng tối đa các loại Bộ nhớ lõi và Khoảng cách để truy cập bộ nhớ nhẹ
Figures xvii
Tables xix
Foreword to the Third Edition xxi
Foreword to the Second Edition xxiii
Foreword to the First Edition xxv
Preface xxvii
Acknowledgments xxxiii
About the Authors xxxv
About the Annotators xxxvii
Chapter 1: Introduction 1
1.1 Qualities of a Well-Designed Framework 3
Chapter 2: Framework Design Fundamentals 9
2.1 Progressive Frameworks 12
2.2 Fundamental Principles of Framework Design 15
Chapter 3: Naming Guidelines 41
3.1 Capitalization Conventions 42
3.2 General Naming Conventions 52
3.3 Names of Assemblies, DLLs, and Packages 61
3.4 Names of Namespaces 63
3.5 Names of Classes, Structs, and Interfaces 67
3.6 Names of Type Members 74
3.7 Naming Parameters 79
3.8 Naming Resources 81
Chapter 4: Type Design Guidelines 83
4.1 Types and Namespaces 85
4.2 Choosing Between Class and Struct 89
4.3 Choosing Between Class and Interface 92
4.4 Abstract Class Design 100
4.5 Static Class Design 102
4.6 Interface Design 104
4.7 Struct Design 106
4.8 Enum Design 111
4.9 Nested Types 124
4.10 Types and Assembly Metadata 127
4.11 Strongly Typed Strings 129
Chapter 5: Member Design 135
5.1 General Member Design Guidelines 135
5.2 Property Design 158
5.3 Constructor Design 165
5.4 Event Design 175
5.5 Field Design 180
5.6 Extension Methods 184
5.7 Operator Overloads 192
5.8 Parameter Design 202
5.9 Using Tuples in Member Signatures 220
Chapter 6: Designing for Extensibility 227
6.1 Extensibility Mechanisms 227
6.2 Base Classes 242
6.3 Sealing 244
Chapter 7: Exceptions 249
7.1 Exception Throwing 254
7.2 Choosing the Right Type of Exception to Throw 260
7.3 Using Standard Exception Types 273
7.4 Designing Custom Exceptions 279
7.5 Exceptions and Performance 281
Chapter 8: Usage Guidelines 287
8.1 Arrays 287
8.2 Attributes 291
8.3 Collections 294
8.4 DateTime and DateTimeOffset 306
8.5 ICloneable 308
8.6 IComparable<T> and IEquatable<T> 309
8.7 IDisposable 311
8.8 Nullable<T> 311
8.9 Object 312
8.10 Serialization 319
8.11 Uri 321
8.12 System.Xml Usage 323
8.13 Equality Operators 324
Chapter 9: Common Design Patterns 329
9.1 Aggregate Components 329
9.2 The Async Patterns 339
9.3 Dependency Properties 365
9.4 Dispose Pattern 372
9.5 Factories 394
9.6 LINQ Support 400
9.7 Optional Feature Pattern 408
9.8 Covariance and Contravariance 412
9.9 Template Method 423
9.10 Timeouts 426
9.11 XAML Readable Types 427
9.12 Operating on Buffers 430
9.13 And in the End... 464
Appendix A: C# Coding Style Conventions 465
A.1 General Style Conventions 466
A.2 Naming Conventions 480
A.3 Comments 482
A.4 File Organization 483
Appendix B: Obsolete Guidance 487Appendix C: Sample API Specification 523
Appendix D: Breaking Changes 529
D.1 Modifying Assemblies 530
D.2 Adding Namespaces 531
D.3 Modifying Namespaces 532
D.4 Moving Types 532
D.5 Removing Types 533
D.6 Modifying Types 534
D.7 Adding Members 539
D.8 Moving Members 541
D.9 Removing Members 542
D.10 Overloading Members 544
D.11 Changing Member Signatures 545
D.12 Changing Behavior 553
D.13 A Final Note 556
Glossary 557
Index 563