Aufräumen und Codestyle ändern


Irgendwann ist die Schmerzgrenze angekommen, dass der Code wie dieser im Bild geschrieben wurde und einige Schwierigkeiten beim Lesen bereiten. Fehlende Vorzeichen sowie Groß- und Kleinschreibung von Funktionsvariablen erschweren die Übersicht.

Neue Fassade
Der Programmcode den ich für diesen Teil zur Verfügung stelle, funktioniert wie bereits aus 'Von Händlern, Kisten und Münzen (Arduino Esplora, Part8)'. Der wesentliche Unterschied ist, dass der Code zurecht gerückt, größten Teils kommentiert und zusätzliche Trennlinien hinzugekommen sind. Natürlich werden in Zukunft auch alle anderen Beispiele nach diesem Codestyle geschrieben. Durch die Festlegung verschiedener Regeln beim Codeformat, sollte die Lesbarkeit deutlich verbessern.
Im Internet suchte ich einige Codebeispiele und las sie bezüglich dessen Aufbau und Formatierung. Zwar gibt es zu dem Thema bereits einige Codestyles, aber die Anforderung sollte ein Kompromiss für Hobby Entwickler sein.

Folgende Codeformat Vorgaben haben sich bei der Suche und Vergleich als Sinnvoll ergeben.


Beschreibung
Wie der Code aussehen könnte
1
If-Else Abfragen.
Auch wenn man sie in einer Zeile schreiben kann, ist die Form schlecht zu lesen. Auch wenn nur eine Sache behandelt wird.
if(stateValue > 0) {
    doAnything(stateValue);
}
2
Kommentare zu einer Zeile
Nach einigen Vergleichen von Kommentierten Programmcode, empfand ich die rechts neben dem Code stehenden Kommentare als angenehm. Eine Prämisse hat diese Form jedoch. Da keine Auto Funktion vorhanden ist, dass die Kommentare in gleicher Höhe einrückt ist der Vorgang mit etwas Fleiß verbunden.
int16_t stateValue = 0;     // local variable for todo anything
3
Kommentare über einer Funktionsmethode
Scrollt man durch den Code, dann helfen Trennlinien zwischen den Methoden. Wie lang die Trennlinie selbst sein soll, kann soweit bestimmt werden, wie sie für die Sichtbarkeit benötigt wird.
// ============================================
void loop() {
  mCounter++;
}
4
Zusammenhängende Funktionsvariablen
Zusammengenutzte Variablen sollten auch möglich nahe zusammenliegen und auch ggf. eine Beschreibung haben.
// ============================================
// function variables

int16_t mCounter = 0;   // it is only a counter
5
Wertetypen
Ist sicherlich mühseliger zu schreiben, aber gewährleistet das auch mit anderen Compiler dasselbe Ergebnis kommt. Das kann beim Verwenden eines 16Bit oder 32Bit Microcontrollers vorkommen, das beim kompilieren die Wertetypen anders übersetzt. Z.B. würde statt eines 'int16' ein 'int32' eingesetzt. Bei Berechnungen mit größeren Werten kann es da schon zu Rechenfehler kommen.
int8_t value8 = 123;
int16_t value16 = 123;
int32_t value32 = 123;

uint8_t valueU8 = 123;
uint16_t valueU16 = 123;
uint32_t valueU32 = 123;
6
Funktionsvariablen
Obwohl man möglichst versucht keine Globalen Variablen zu verwenden, bleibt es nicht aus. Bisher waren die von der Schreibweise von lokalen und globalen nicht zu unterscheiden.
Ein 'm' davor und der Variablenname groß geschrieben und schon lassen sich funktionsvariablen leichter zuordnen.
int8_t mMyFunctionVariable = 123;

void FunctionAndLocalVariable() {
  int8_t myLocalVariable = 123;
}
7
#define
Um diesen Wert wiederum von den Funktionsvariablen zu unterscheiden, werden diese vollständig groß geschrieben. Bei mehreren Wörter, sollte ein Unterstrich geschrieben werden.
#define MY_DEFINE_VALUE 123

Ordnung ist das halbe Leben
Im Wesentlichen sollten man sich bewusst machen, dass der Programmcode ab einer gewissen Größe immer einer Ordnung folgen sollte. Das Projekt mit dem Arduino Esplora ist noch relativ klein und leicht zu Händeln, da bietet sich die Änderungen der Code Darstellung gut an und hilft auch bei der Selbstreflektion des eigenen geschriebenen Codes. Abgesehen haben wir heute größere Bildschirme und mehr als Ausreichend Festplattenspeicher, so dass kompaktes zusammenrücken und einsparen von Zeichen nicht mehr Zeitgemäß ist.

Der Inhalt zu den Beispiel kann sich mit der Zeit Ändern bzw. erfolgen weitere Codeformat Beispiele.


Reference zu verschieden Codestyle Beschreibungen.

Kommentare

Beliebte Posts aus diesem Blog

Arduino Control (Teil 5) - PWM Signal einlesen

RC Fahrtenregler für Lego Kettenfahrzeug

Angular auf dem Raspberry Pi