Skip to content
Snippets Groups Projects
Commit 158146dc authored by Adrian Böckenkamp's avatar Adrian Böckenkamp
Browse files

Coding-Style draft.

git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1061 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
parent 4a47e9f9
No related branches found
No related tags found
No related merge requests found
- Sprache (Kommentare, SVN-Commits, Frickeleien): ausnahmslos Englisch
- Einrückung: 1 Tab (entspricht 4 Spaces), bei Statements die bündig besser zu
lesen sind, ist eine Aufweichung möglich, Beispiele:
cout << "The counter value is: "
<< value;
if (first_looong_condition &&
second_looong_condition) { // oder für while/for/...
...
- Namenskonventionen:
* Code-Dateien: .cc (Source), .hpp (Header), .ah (Aspect-Header), MixedCase
* Namespaces klein
* Klassen fangen mit Großbuchstaben an, dann MixedCase
* Public-Members beginnen mit Kleinbuchstaben, dann MixedCase
* Private & Protected-Member beginnen mit "m_", globale Variablen mit "g_"
* Präprozessor-Direktiven immer groß; Include-Guards für Datei MyFooBar.hpp
gemäß __MY_FOO_BAR_HPP__
* Konstante Variablen ebenfalls immer groß
* Keine Konvention für lokale Variablen
* typedef's-Bzeichner gemäß
typedef std::whatever<type> good_name_t
- Kommentare
* Doxygen-Kommentaren:
~ Detailiert für alle Public-Member (bzw. Funktionen), also Parameter,
Return-Wert, Seiteneffekte, ...
~ In Kurzform für Private/Protected-Member
~ An jedem Beginn einer (Aspekt-)Header-Datei: @brief
~ Alle structs/classes/enums (und deren Elemente!)
* bei kompliziertem Kram (z.B.: drei verschiedene Datenstrukturen, zwischen
denen Events innerhalb von EventList hin- und herwandern können) gibt es
Kommentare nicht nur zum "was passiert hier", sondern auch zum "warum
machen wir das so"
* Innerhalb von Methoden/Funktionen "normale" C/C++ Kommentare (//, /**/)
- Formatierung
* Direktiven für bedingte Kompilierung beginnen ganz vorne, außer bei
eingerückten Anweisungen:
private: | ...
int m_Bar; | #ifndef __puma
#ifndef __puma | extern int g_Foo;
boost::thread* m_pThread; | #endif
#endif | ...
...
Zur Verdeutlichung kann ein #endif mit "// !puma" beendet werden (bei
großem vertikalem Abstand)
* Einrückungsbreite: 100 Zeichen
* public/private/protected werden 1-mal eingerückt, Methoden/Var. ebenfalls
class pferd {
public:
void eier();
}
Bei switch/case/namespaces:
switch (foo) {
case 1:
...
}
* Blöcke: '{' in derselben Zeile mit einem Space davor (namespace, class,
if, while, for, ...)
namespace pferd {
...
}
* Bei Funktionsdefinitionen folgt die '{' in einer neuen Zeile, außerdem
keine Spaces.
Definition: | Deklaration:
void myFunction(int i) | void myFunction(int i);
{ |
... |
} |
* Space zwischen Kontrollstruktur und Klammer zur Unterscheidung von
Funktionsaufrufen (für die Bedingungen keine weiteren Spaces):
if (...) {
...
} else if (...) {
...
} else {
...
}
* return ohne Klammerung
...@@ -316,3 +316,11 @@ themselves, they contain some documentation): ...@@ -316,3 +316,11 @@ themselves, they contain some documentation):
- multiple-clients.sh -- Is run on an experiment host by runcampaign.sh, - multiple-clients.sh -- Is run on an experiment host by runcampaign.sh,
starts several instances of client.sh in a tmux session starts several instances of client.sh in a tmux session
- client.sh -- (Repeatedly) runs a single FailBochs instance - client.sh -- (Repeatedly) runs a single FailBochs instance
TODO:
- bochs-distribution problematik
- Ausgabenproblematik
- in wiedeholten verteilten experimenten (nicht lokal) sollte man daran denken
dass der server nicht läuft bzw. funktioniert, wenn es noch eine existierende
coolcampaign.csv gibt
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment