Ellemtel C++ Style and Rules - Introduction

1. Introduction

The purpose of this document is to define one style of programming in C++. The rules and recommendations presented here are not final, but should serve as a basis for continued work with C++. This collection of rules should be seen as a dynamic document; suggestions for improvements are encouraged. A form for requesting new rules or changes to rules has been included as an appendix to this document. Suggestions can also be made via e-mail to one of the following addresses:

  • erik.nyquist@eua.ericsson.se
  • mats.henricson@eua.ericsson.se

Programs that are developed according to these rules and recommendations should be:

  • correct
  • easy to maintain.

In order to reach these goals, the programs should:

  • have a consistent style,
  • be easy to read and understand,
  • be portable to other architectures,
  • be free of common types of errors,
  • be maintainable by different programmers.

Questions of design, such as how to design a class or a class hierarchy, are beyond the scope of this document. Recommended books on these subjects are indicated in the chapter entitled 'References'.

In order to obtain insight into how to effectively deal with the most difficult aspects of C++, the examples of code which are provided should be carefully studied. C++ is a difficult language in which there may be a very fine line between a feature and a bug. This places a large responsibility upon the programmer. In the same way as for C, C++ allows a programmer to write compact and, in some sense, unreadable code.

Code written in bold type is meant to serve as a warning. The examples often include class definitions having the format "class <name> {};". These are included so that the examples may be compiled; it is not recommended that class definitions be written in this way. In order to make the code more compact, the examples provided do not always follow the rules. In such cases, the rule which is broken is indicated.

Many different C++ implementations are in use today. Most are based on the C++ Language System by AT&T. The component of this product which translates C++ code to C is called Cfront. The different versions of Cfront (2.0, 2.1 & 3.0 are currently in use) are referred to in order to point out the differences between different implementations.

Rule 0
Every time a rule is broken, this must be clearly documented.

  Don't waste time on formatting C++ source code by hand any more!  Try SourceFormatX C++ Code Formatter!