Dies ist eine alte Version des Dokuments!


Programmierrichtlinien für C++

Quicklinks

Wir verwenden die Google C++ Guidelines mit den unten aufgeführten Ausnahmen.

#define Guards

Wir verwenden einen an Java-Packages angelehnten Stil.

Beispiel für die Klasse Block mit folgenden Dateien:

  • include/control/Block.hpp
  • src/control/Block.cpp

In Java würde die Klasse dem Paket org.eeros.control angehören. Wir verwenden daher folgenden #define-Guard im Headerfile:

#ifndef ORG_EEROS_CONTROL_BLOCK_HPP_
#define ORG_EEROS_CONTROL_BLOCK_HPP_
 
...
 
#endif  // ORG_EEROS_CONTROL_BLOCK_HPP_

Dateinamen

  • Dateinamen:
    • Wie Klassen-Namen, also z.B. für die Klasse ExampleClass heisst die Datei ExampleClass.cpp
    • Werden mehrere Klassen in einer Datei implementiert, so entspricht der Dateiname dem Modulnamen und beginnt daher mit einem Kleinbuchstaben. Zum Beispiel exampleModule.cpp
  • Dateiendungen:
    • C++ Source Code: .cpp
    • C++ Headerfiles: .hpp

Variablen Namen

  • Beginnen mit Kleinbuchstaben
  • Keine Underlines
  • CamelCase
  • Kein Underscore am Anfang oder Ende für Member Variablen
  • Kein m_ Präfix für Member Variablen
  • Kein p_ Präfix für private Variablen
  • Konstanten beginnen mit einem kleinen k (z.B. kGain).
  • Pointer beginnen mit einem kleinen p (z.B. pLength). Ausser wenn:
    • es sich um ein Array handelt
    • es sich um einen c-String handelt
tableName   -> OK
tablename   -> OK, aber besser tableName
table_name  -> Falsch
_tableName  -> Falsch
m_tableName -> Falsch
tableName_  -> Falsch