Home | Amazing | Today | Tags | Publishers | Years | Account | Search 
API Design for C++

Buy
API Design for C++, 9780123850034 (0123850037), Morgan Kaufmann, 2011

Writing large applications in C++ is a complex and tricky business. However, designing reusable C++ interfaces that are robust, stable, easy to use, and durable is even more difficult. The best way to succeed in this endeavor is to adhere to the tenets of good Application Programming Interface (API) design.

An API presents a logical interface to a software component and hides the internal details required to implement that component. It offers a high-level abstraction for a module and promotes code reuse by allowing multiple applications to share the same functionality.

Modern software development has become highly dependent on APIs, from low-level application frameworks to data format APIs and graphical user interface (GUI) frameworks. In fact, common software engineering terms such as modular development, code reuse, componentization, dynamic link library or DLL, software frameworks, distributed computing, and service-oriented architecture all imply the need for strong API design skills.

Some popular C and C++ APIs that you may already be aware of include the Standard Template Library (STL), Boost, the Microsoft Windows API (Win32), Microsoft Foundation Classes (MFC), libtiff, libpng, zlib, libxml++, OpenGL, MySQL++, Trolltech’s Qt, wxWidgets, GTK+, KDE, SkypeKit, POSIX pthreads, Intel’s Threading Building Blocks, the Netscape Plugin API, and the Apache module API. In addition, many of Google’s open-source projects are C++, as is much of the code on the sourceforge.net, bitbucket.org, and freshmeat.net Web sites.

APIs such as these are used in all facets of software development, from desktop applications, to mobile computing and embedded systems, to Web development. For example, the Mozilla Firefox Web browser is built on top of more than 80 dynamic libraries, each of which provides the implementation for one or more APIs.

Elegant and robust API design is therefore a critical aspect of contemporary software development. One important way in which this differs from standard application development is the far greater need for change management. As we all know, change is an inevitable factor in software development; new requirements, feature requests, and bug fixes cause software to evolve in ways that were never anticipated when it was first devised. However, changes to an API that is shared by hundreds of end-user applications can cause major upheaval and ultimately may cause clients to abandon an API. The primary goal of good API design is therefore to provide your clients with the functionality they need while also causing minimal impact to their code—ideally zero impact—when you release a new version.

(HTML tags aren't allowed.)

Healthcare-Associated Infections in Children: A Guide to Prevention and Management
Healthcare-Associated Infections in Children: A Guide to Prevention and Management
With advances in technology and medical science, children with previously untreatable and often fatal conditions, such as congenital heart disease, extreme prematurity and pediatric malignancy, are living longer.  While this is a tremendous achievement, pediatric providers are now more commonly facing challenges in these medical...
ActionScript: Your visual blueprint for creating interactive projects in Flash CS4 Professional
ActionScript: Your visual blueprint for creating interactive projects in Flash CS4 Professional

Visual learners can get up and running quickly on ActionScript programming skills for Flash CS4

If you're a programmer who learns best when you see how something is done, this book will have you up and running with ActionScipt in no time. Step-by-step, two-page lessons show you the core programming foundations you must master to...

The Traveling Salesman: Computational Solutions for TSP Applications (Lecture Notes in Computer Science)
The Traveling Salesman: Computational Solutions for TSP Applications (Lecture Notes in Computer Science)

More than fifteen years ago, I was faced with the following problem in an assignment for a class in computer science. A brewery had to deliver beer to five stores, and the task was to write a computer program for determining the shortest route for the truck driver to visit all stores and return to the brewery. All my attemps to find a...


An Introduction to GCC
An Introduction to GCC
This manual provides a complete tutorial introduction to the GNU C and C++ compilers, gcc and g++. Many books teach the C and C++ languages, this book teaches you how to use the compiler itself. All the common problems and error messages encountered by new users of GCC are carefully explained, with numerous easy-to-follow "Hello...
Wireless Communications Design Handbook: Terres- Trial & Mobile Interference,
Wireless Communications Design Handbook: Terres- Trial & Mobile Interference,
The information age, which began its major drive at the beginning of the 1980s with the birth of desktop computing, continues to manifest itself in many ways and presently dominates all aspects of modem technological advances. Personal wireless communication services can be considered a "subset technology" of the information age, but they...
The Little iDVD Book, Second Edition
The Little iDVD Book, Second Edition
Learning a new technology can be an intimidating prospect, even when the tools are as straightforward as Apple's iDVD 3. If you've been hesitating to take the step into DVD production, wait no more—there's no gentler approach than that offered by Peachpit's best-selling "Little" book series and noted Mac columnist Bob ("Dr....
©2021 LearnIT (support@pdfchm.net) - Privacy Policy