Channels ▼
RSS

C/C++

Bulletproofing C++ Code

Source Code Accompanies This Article. Download It Now.


Sergei is the C/C++ Solution Manager at Parasoft. He can be reached at sergei.sokolov@parasoft.com.


C++ turned 22 this year—yes, 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.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video