Element | Richtlinie | Beispiel |
class, struct | Namen bestehen aus Groß- und Kleinbuchstaben und enthalten keine Unterstriche. Alle Namen fangen mit einem Großbuchstaben an. | class AudioCache { };
class Complex { }; |
typedef | s.o. | typedef int Sample;
typedef unsigned char Byte; typedef LinearFFT<double> SimplyFFT; |
enum | s.o. | enum SeekMode { BEG = 0, CUR, END }; |
const | Namen werden mit Großbuchstaben geschrieben. Worte werden durch Unterstriche voneinander getrennt. | const int MIN_WINDOW_SIZE = 16;
const int MAX_LENGTH = 1000; |
Funktionen | Namen bestehen aus Groß- und Kleinbuchstaben und enthalten keine Unterstriche. Alle Namen fangen mit einem Kleinbuchstaben an. | void load(int samples) const;
int samplesAbove(const AudioCache& cache, Sample x); |
Variablen | Namen bestehen aus Groß- und Kleinbuchstaben und enthalten keine Unterstriche. Alle Namen fangen mit einem Kleinbuchstaben an. | int windowSize = 0;
vector<Sample> samples; |
Es hat sich bewehrt, Felder mit Worten in Plural zu benennen (z.B. samples oder amplitudes). Funktionen, die einen Wert von Typ bool zurückliefern, sollten möglichst einen Verb wie "is" oder "has" in ihrem Namen haben, z.B.: isOpen() statt open().
Mit docpp kann die Programmdokumentation automatisch erzeugt werden. Die Kommentare in Header-Dateien sollten sich deshalb an den Syntaxregeln von docpp orientieren. Hier ein Beispiel:
So könnten die Kommentare in der Header-Datei einer Klasse AudioData aussehen:
/**
* Die Klasse stellt eine Audiodatei dar. Sie bietet eine
* Reihe von Methoden zum Öffnen, Lesen und Schliessen
* von Audiodateien usw.
*
* @memo stellt eine Audiodatei dar
*
* @author Silvia Pfeiffer, Peter Tomczyk
* @version $Id: prgguide.htm,v 1.2 1998/01/27 14:43:31 tomczyk
Exp tomczyk $
*/
class AudioData {
/**
* laedt eine gegebene Anzahl von Samples aus der Audiodatei
* in den Audiocache. Liefert die Anzahl der geladenen
Werte
* zurueck. Wird EOF erreicht, so gibt load eine kleinere
* Zahl als die angegebene zurueck.
*
* @param samples Anzahl der Samples
*
* @return die Anzahl der geladenen Samples
*
* @exception IOException wenn ein Fehler beim lesen
aufgetreten
*
ist
* @exception LogicException wenn samples kleiner 0
ist
*
* @see loadSecs
*/
virtual int load(int samples) const;
/// die Audiodatei
ifstream audiofile;
};
...und in der Programmdatei könnte dann etwas über das Format der Audiodaten stehen. Den Benutzer interessiert das nicht, denn das Format ist für ihn transparent!
Statt des globalen Enumeratortypen:
class Ampel {
public:
Farbe zustand() const;
private:
Farbe _zustand;
};
Farbe Ampel::zustand() const { return _zustand; }
sollte an dieser Stelle ein eingebetteter Enumeratortyp verwendet werden:
public:
enum { ROT, GELB, GRUEN } Farbe;
Farbe zustand() const;
private:
Farbe _zustand;
};
Ampel::Farbe Ampel::zustand() const { return _zustand; }
class Warteschlange {
};
public:
static const int MAX_LAENGE;
};
const int Warteschlange::MAX_LAENGE = 1000;
Bitte, Ausnahmen in den Kommentaren vermerken. In docpp ist dafür das Feld @exception <Name der Exception-Klasse> <Erklärung, wann es zu der Ausnahme kommt> vorgesehen.
Falls private deklarierte Elemente ausgegeben werden, muß der Ausgabeoperator eine friend-Funktion der Klasse X sein, d.h.:
Last modified: $Id: prgguide.htm,v 1.2 1998/01/27 14:43:31 tomczyk Exp tomczyk $