Skip to content
boomshanka edited this page Jul 12, 2011 · 7 revisions

Allgemeines

Um den Code möglichst übersichtlich, einheitlich und lesbar zu gestalten, sollte sich jeder an einige Regeln halten. Diese Regeln für den optimalen Codestil sind hier aufgeführt.

Klassen und Funktionen

Klassen und Funktionen werden groß geschrieben (UpperCamelCase). Eine Klasse sieht dabei folgendermaßen aus:

#ifndef FILE_HPP // <- Include Guards
#define FILE_HPP

#include <iostream>


class Foo
{
public:
    Foo(int moo);
    ~Foo();
    
    void DoSomething(int argument); // <- UpperCamelCase, Name der Argumente ausgeschrieben und klein.
    
    void SetMoo(int moo) {myMoo = moo;} // <- Setter
    int GetMoo() {return myMoo;} // <- Getter
    
private: // <- Nicht eingerückt
    int myMoo; // <- Ein Tab eingerückt, my als Präfix für Membervariablen
    Object* myObject;
};

#endif // FILE_HPP


// file.cpp

#include "file.hpp"

Foo::Foo(int moo) :         // <- Initialisierungsliste
myMoo(moo), myObject(NULL)  // <-          "
{
    myObject = new Object();
}

Foo::~Moo()
{
    delete myObject; // <- Nicht vergessen!!
}

void Foo::DoSometing(int argument)
{
    argument = argument * argument;
    argument = std::sqrt(argument);
    std::cout << "Hi :D";
}

Variablen

Membervariablen bekommen my-Präfixe. Alle anderen Variablen und Konstanten fangen mit einem kleinen Buchstabe an (lowerCamelCase).

unsigned int mooCounter = 0;
++mooCounter;

for(int i = 0; i < foo; ++i) // <- i (j, k) als Zählvariable
{
  ..
}

const int answer = 42;

Enums

enum Color
{
    BLUE, // <- ganz groß geschrieben! Jeweils eine Zeile
    RED,
    YELLOW
};

Schleifen und Keywords

Keywords werden ohne Klammer aufgerufen, wie z.B. "return 0;", jedoch kommt eine Klammer hinzu, wenn es sich um Bedingungen handelt.

for(int i = 0; i < size; ++i)
{ // <- Neue Zeile

    DoSomething(i);
}

if(i < j)
{
    j = 0;
    return 0;
}
else
{
    return (i == j);
}

Namespace

namespace space // <- Namespace klein geschrieben und möglichst kurz
{

class Foo; // <-Nicht einrücken nach namespace

}

space::Foo moo;
Clone this wiki locally