C++ turned 22 this yearyes, it was 22 years ago that Bjarne Stroustrup published the first specification of the language. Moreover, C has another dozen or so years on C++. Despite all predictions that Java and .NET languages will make C++ obsolete, C and C++ development remains healthy. More than 3 million programmers maintain and enhance the C and C++ applications currently in use and continue to write significant amounts of new code.
C/C++ programmers face somewhat different challenges than programmers working in other languages and domains. Today's C++ projects often involve modifying or extending existing systems, refactoring available code for new applications, or integrating existing modules in new ways. Most commonly, a team inherits a pile of C or C++ code from a different group, an outside vendor/contractor, or the open-source community. Such projects inevitably require modifying some amount of unfamiliar code (while getting to understand it in the process) and maintaining it going forward.
In this article, I examine several techniques that, when properly and consistently applied and monitored, reduce the risks of errors when diverse teams of programmers develop code on top of existing code bases, as well as improve the stability and quality of the project's evolving code base.