API Design for C++ Second Edition provides a comprehensive discussion of Application
Programming Interface (API) development from initial design through implementation testing
documentation release versioning maintenance and deprecation. It is the only book that
teaches the strategies of C++ API development including interface design versioning
scripting and plug-in extensibility. Drawing from the author's experience on large scale
collaborative software projects the text offers practical techniques of API design that
produce robust code for the long-term. It presents patterns and practices that provide real
value to individual developers as well as organizations. The Second Edition includes all new
material fully updated for the latest versions of C++ including a new chapter on concurrency
and multithreading as well as a new chapter discussing how Objective C++ and C++ code can
co-exist and how a C++ API can be accessed from Swift programs. In addition it explores often
overlooked issues both technical and non-technical contributing to successful design
decisions that produce high quality robust and long-lived APIs. It focuses on various API
styles and patterns that will allow you to produce elegant and durable libraries. A discussion
on testing strategies concentrates on automated API testing techniques rather than attempting
to include end-user application testing techniques such as GUI testing system testing or
manual testing.