Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Cover image
Title page
Table of Contents
Copyright
Foreword
Preface
Why you should read this book
Who is the target audience
Focusing on C++
Conventions
Book web site
Acknowledgments
Author Biography
Chapter 1. Introduction
1.1 What are Application Programming Interfaces?
1.2 What’s Different About API Design?
1.3 Why Should you Use APIs?
1.4 When Should you Avoid APIs?
1.5 API Examples
1.6 File Formats and Network Protocols
1.7 About this Book
Chapter 2. Qualities
2.1 Model the Problem Domain
2.2 Hide Implementation Details
2.3 Minimally Complete
2.4 Easy to Use
2.5 Loosely Coupled
2.6 Stable, documented, and tested
Chapter 3. Patterns
3.1 Pimpl Idiom
3.2 Singleton
3.3 Factory Methods
3.4 API Wrapping Patterns
3.5 Observer Pattern
Chapter 4. Design
4.1 A Case for Good Design
4.2 Gathering Functional Requirements
4.3 Creating Use Cases
4.4 Elements of Api Design
4.5 Architecture Design
4.6 Class Design
4.7 Function Design
Chapter 5. Styles
5.1 Flat C APIs
5.2 Object-oriented C++ APIs
5.3 Template-based APIs
5.4 Data-driven APIs
Chapter 6. C++ Usage
6.1 Namespaces
6.2 Constructors and Assignment
6.3 Const Correctness
6.4 Templates
6.5 Operator Overloading
6.6 Function Parameters
6.7 Avoid #define for Constants
6.8 Avoid Using Friends
6.9 Exporting Symbols
6.10 Coding Conventions
Chapter 7. Performance
7.1 Pass Input Arguments by Const Reference
7.2 Minimize #include Dependencies
7.3 Declaring Constants
7.4 Initialization Lists
7.5 Memory Optimization
7.6 Don’t Inline Until You Need To
7.7 Copy on Write
7.8 Iterating Over Elements
7.9 Performance Analysis
Chapter 8. Versioning
8.1 Version Numbers
8.2 Software Branching Strategies
8.3 Life Cycle of an API
8.4 Levels of Compatibility
8.5 How to Maintain Backward Compatibility
8.6 API Reviews
Chapter 9. Documentation
9.1 Reasons to Write Documentation
9.2 Types of Documentation
9.3 Documentation Usability
9.4 Using Doxygen
Chapter 10. Testing
10.1 Reasons to Write Tests
10.2 Types of API Testing
10.3 Writing Good Tests
10.4 Writing Testable Code
10.5 Automated Testing Tools
Chapter 11. Scripting
11.1 Adding Script Bindings
11.2 Script-binding Technologies
11.3 Adding Python Bindings With Boost Python
11.4 Adding Ruby Bindings With Swig
Chapter 12. Extensibility
12.1 Extending Via Plugins
12.2 Extending Via Inheritance
12.3 Extending Via Templates
Appendix A. Libraries
A.1 Static Versus Dynamic Libraries
A.2 Libraries on Windows
A.3 Libraries on Linux
A.4 Libraries on Mac Os X
Bibliography
Index
← Prev
Back
Next →
← Prev
Back
Next →