Skip to content
MartinMartimeo edited this page Jun 22, 2011 · 5 revisions

Generell

Ein Statement pro Zeile:

a++;   
b -= a;  

ltr Leserichtung, d.h. von links nach rechts, von groß nach klein:

if ((iHours == 23) && (iSeconds == 12))
{
    //**
}

nicht:

if (12 == iSeconds)

konsequentes Einrücken, 4 Spaces

if () 
{
    statement1
    statement2
}

vermeiden von short ifs, Einklammern von one-line-statements

if () 
{
    statement
}

geschweifte Klammern in der nächsten Zeile, außer für leere Anweisungsmenge:

void DoSomething() {}

keep it simple, keep it stupid

kannst du deine Funktion nicht in einem Satz beschreiben macht sie zuviel.

Dateien

Tragen den Namen ihrer beinhalten public class, enthalten nicht mehr als eine class.

class User {}
-> user.h, user.cpp

Beginnen mit einem Kommentarblock, der Zweck und Author beinhaltet

/*
    Macht nichts
    Author: M&M
*/

Definition von Konstanten mit ifndef, Großschreibung, [A-Z]{3}[A-Z_]*:

#ifndef DEBUG
#define DEBUG
#endif

Include von eigenen Dateien via Header File:

#include "blah.h"

Include von Systembibiotheken via <>:

#include <map>

Namespace Einbindungen

using std::map;

Forward Deklarationen

class File;

Public Class mit public, private, protected

Definition von Methodennamen

  • Englisch
  • {Partizip} ([A-Z][a-z]+)+
  • generell: Methoden sind Aktionen (Get,Set,Add,Push,Del,...) oder Abfragen (Is,Has). Der Name sollte beschreibend sein. Getter werden mit Get, Setter mit Set als Partizip formuliert, folgend mit dem Variabelnamen ohne Datentyp.

Aktionen

  • Get: Recieve a value (object) -> Getter
  • Set: Set a value (void) -> Setter
  • Del: Remove a value, Delete a value (void/object) -> Deleter
  • Add: Add a value to f.e. vector (void/index)

Beispiele:

GetSkinName()
SetSkinName()
AddUser()
IncrSomeVar()

Abfragen

  • Geben Boolean zurück

Beispiele:

IsSuperUser()
IsValid()
HasServers()

Defintion von Funktionsnamen

  • Selbe Regeln wie für Methoden.

Beispiel:

CServer* FindServer(const CString& sName) const;
void DoSomething();

Bezeichnung von Variabelnamen

  • generell: [Präfix] {Datentyp} {Bezeichner}

Bezeichner

  • Englisch
  • ([A-Z][a-z]+)+

Beispiel (mit s als Datentyp):

sDateTime

Datentypen

  • b: boolean
  • c: char
  • d: double
  • fi: file
  • fn: function
  • f: float
  • it: iterator
  • i: integer
  • l: long
  • p: pointer
  • r: real
  • s: string

Präfix

  • a: array
  • m: map
  • s: set
  • u: unsigned
  • v: vector

Funktionsvariabeln

  • {Präfix} {Datentyp} {Bezeichner}

Beispiel:

String User::ParseString(const String& sStr) const {

Klassenvariabeln

  • m_ {Präfix} {Datentyp} {Bezeichner}

Beispiel:

class User {
protected:
    bool m_bBeingDeleted;
    map<String,String> m_msStrings; 
};

lokale Variabeln

  • Funktionsvaribalen folgend, außer feststehend:
    • a,..,i,j,..: Loopvariabeln
    • it: Iterator

Beispiel:

for (set<String>::iterator it = ssStrings.begin(); it != ssStrings.end(); ++it) {
    DoSomething(*it)
}

Parting Words

"The real measurement of code is done in wts, meaning what the fucks per second. If a drunken fool can read it with 0 wts, then it is good code"