API Design for C++
Autor Martin Reddyen Limba Engleză Paperback – 22 mai 2024
- Teaches the strategies of C++ API development, including design, versioning, documentation, testing, scripting, and extensibility
- Includes extensive code examples that illustrate each concept, with fully functional examples and working source code for experimentation available online
- Covers various API styles and patterns, with a focus on practical and efficient designs for large-scale, long-term projects
- Includes updated URLs and ensures all code examples continue to work with modern compilers and supporting tools
Toate formatele și edițiile | Preț | Express |
---|---|---|
Paperback (2) | 286.16 lei 5-7 săpt. | +88.01 lei 6-12 zile |
Elsevier – 13 mar 2011 | 286.16 lei 5-7 săpt. | +88.01 lei 6-12 zile |
ELSEVIER SCIENCE – 22 mai 2024 | 448.28 lei 5-7 săpt. |
Preț: 448.28 lei
Preț vechi: 487.25 lei
-8% Nou
Puncte Express: 672
Preț estimativ în valută:
85.79€ • 90.25$ • 71.58£
85.79€ • 90.25$ • 71.58£
Carte tipărită la comandă
Livrare economică 02-16 ianuarie 25
Preluare comenzi: 021 569.72.76
Specificații
ISBN-13: 9780443222191
ISBN-10: 0443222193
Pagini: 648
Dimensiuni: 191 x 235 mm
Greutate: 1.3 kg
Ediția:2
Editura: ELSEVIER SCIENCE
ISBN-10: 0443222193
Pagini: 648
Dimensiuni: 191 x 235 mm
Greutate: 1.3 kg
Ediția:2
Editura: ELSEVIER SCIENCE
Cuprins
1. Introduction What Are APIs? What's Different about API Design? Why Should You Use APIs? When Should You Avoid APIs? API Examples File Formats and Network Protocols About This Book
2. Qualities Model the Problem Domain Hide Implementation Details Minimally Complete Easy to Use Loosely coupled Stable, Documented, and Tested
3. Patterns Pimpl Idiom Singleton Factory Methods API Wrapping Patterns Observer Pattern
4. Design A Case for Good Design Gathering Functional Requirements Creating Use Cases Elements of API Design Architecture Design Class Design Function Design
5. Styles Flat C APIs Object-Oriented C++ APIs Template-Based APIs Data-Driven APIs
6. C++ Usage Namespaces Constructors and Assignment Const Correctness Templates Operator Overloading Function Parameters Avoid #define for Constants Avoid Using Friends Exporting Symbols Coding Conventions
7. C++ Revisions Which C++ Revision to Use C++11 API Features Smart Pointers Explicit Member Functions Explicit Overrides and Final Enum Classes Function Objects Tuples Hash Tables Constant Expressions Null pointer constant Type aliases with using Unicode String Literals C++14 API Features The deprecated Attribute More Relaxed Const Expressions Binary Literals and Digit Separators C++17 API Features Nested Namespace Definitions Inline Variables Check for Header Availability Function Exception Specifications String Views Optionals Any Type Variant Container Byte Type C++20 API Features Modules Template Constraints and Concepts The Spaceship Operator The consteval Specifier Coroutines Version Header C++23 API Features Conditional Preprocessor Directives Multidimensional Subscript Operator Expected Values
8. Performance Pass Input Arguments by Const Reference Minimize #include Dependencies Declaring Constants Initialization Lists Memory Optimization Don't Inline Until You Need To Copy on Write Iterating over Elements Performance Analysis
9. Concurrency Thread Safety Avoiding Global Data Returning Data by Value The Use of static Initialization of Data Mutex Locking for Data Access Using Async Functions Promises and Futures Producer Consumer API
10. Versioning Version Numbers Software Branching Strategies Life Cycle of an API Levels of Compatibility How to Maintain Backward Compatibility API Reviews
11. Documentation Reasons to Write Documentation Types of Documentation Documentation Usability Inclusive Language Using Doxygen
12. Testing Reasons to Write Tests Types of API Testing Writing Good Tests Writing Testable Code Automated Testing Tools
13. Objective C++ and Swift Using Objective C++ within a C++ API Objective C++ wrapper for C++ API Using os_log and signposts Accessing an Objective C++ API in Swift
14. Scripting Adding Script Bindings Script Wrapping Technologies Adding Python Bindings with Boost Python Adding Ruby Bindings with SWIG
15. Extensibility Extending via Plugins Extending via Inheritance Extending via Templates
2. Qualities Model the Problem Domain Hide Implementation Details Minimally Complete Easy to Use Loosely coupled Stable, Documented, and Tested
3. Patterns Pimpl Idiom Singleton Factory Methods API Wrapping Patterns Observer Pattern
4. Design A Case for Good Design Gathering Functional Requirements Creating Use Cases Elements of API Design Architecture Design Class Design Function Design
5. Styles Flat C APIs Object-Oriented C++ APIs Template-Based APIs Data-Driven APIs
6. C++ Usage Namespaces Constructors and Assignment Const Correctness Templates Operator Overloading Function Parameters Avoid #define for Constants Avoid Using Friends Exporting Symbols Coding Conventions
7. C++ Revisions Which C++ Revision to Use C++11 API Features Smart Pointers Explicit Member Functions Explicit Overrides and Final Enum Classes Function Objects Tuples Hash Tables Constant Expressions Null pointer constant Type aliases with using Unicode String Literals C++14 API Features The deprecated Attribute More Relaxed Const Expressions Binary Literals and Digit Separators C++17 API Features Nested Namespace Definitions Inline Variables Check for Header Availability Function Exception Specifications String Views Optionals Any Type Variant Container Byte Type C++20 API Features Modules Template Constraints and Concepts The Spaceship Operator The consteval Specifier Coroutines Version Header C++23 API Features Conditional Preprocessor Directives Multidimensional Subscript Operator Expected Values
8. Performance Pass Input Arguments by Const Reference Minimize #include Dependencies Declaring Constants Initialization Lists Memory Optimization Don't Inline Until You Need To Copy on Write Iterating over Elements Performance Analysis
9. Concurrency Thread Safety Avoiding Global Data Returning Data by Value The Use of static Initialization of Data Mutex Locking for Data Access Using Async Functions Promises and Futures Producer Consumer API
10. Versioning Version Numbers Software Branching Strategies Life Cycle of an API Levels of Compatibility How to Maintain Backward Compatibility API Reviews
11. Documentation Reasons to Write Documentation Types of Documentation Documentation Usability Inclusive Language Using Doxygen
12. Testing Reasons to Write Tests Types of API Testing Writing Good Tests Writing Testable Code Automated Testing Tools
13. Objective C++ and Swift Using Objective C++ within a C++ API Objective C++ wrapper for C++ API Using os_log and signposts Accessing an Objective C++ API in Swift
14. Scripting Adding Script Bindings Script Wrapping Technologies Adding Python Bindings with Boost Python Adding Ruby Bindings with SWIG
15. Extensibility Extending via Plugins Extending via Inheritance Extending via Templates
Recenzii
"Martin Reddy draws from his experience on large scale, collaborative software projects to present patterns and practices that provide real value to individual developers as well as organizations.?API Design for C++?explores often overlooked issues, both technical and non-technical, contributing to successful design decisions that product high quality, robust, and long-lived APIs." --Eric Gregory, Software Architect, Pixar Animation Studios