/* Konventionen zur Namensgebung und Kommentierung im Quelltext ============================================================ * Klassen werden groß geschrieben. Alle Anfangsbuchstaben innerhalb des Klassennamens werden groß geschrieben. * Variablennamen werden klein geschrieben. * Membervariablen werden klein geschrieben. * Funktionen/Methoden haben die gleiche Groß- und Kleinschreibung, wie Variablen. * Konstanten bestehen nur aus Großbuchstaben, Wörter in den Konstantennamen werden durch "_" getrennt. * Funktionen/Methodennamen enthalten Verben, Klassennamen enthalten Substantive. * Kommentare für Funktionen/Methoden, falls überhaupt nötig, enthalten: -- Eine allgemeins Beschreibung der Funktion/Methode -- Eine Beschreibung jedes einzelnen Parameters -- Eine Beschreibung des Rückgabewertes -- Der zulässige Wertebereich der Parameter und der Wertebereich des Rückgabewertes -- Besonderheiten (z.B. geworfene Exceptions,...) * Auch Klassen können Kommentare enthalten, in denen Allgemeines über die Klasse steht. * Alle Bezeichner auf Englisch. Alle Kommentare auf Deutsch! * Einrückung nach VS Code/Arduino IDE Autoformatieren * Variablennamen haben sprechende Namen, die durchaus etwas länger sein können. Konventionen zur Programmierung =============================== * In jede Headerdatei gehört : #ifndef.. #define.. #endif * Jede Funktion/Methode soll nur eine Aufgabe übernehmen. * Jede Funktion/Methode erhält die von ihr benötigten Daten per Parameter (am besten als Referenz) -> damit werden die Funktionen/Methoden besser testbar * Jede Funktion/Methode soll mit einem oder mehreren Unittests getestet werden, soweit das möglich ist. * Jede Funktion/Methode soll nach Fertigstellung von einem Kollegen einem Review unterzogen werden. Konventionen zur Anordnung ================================= * Die Reihenfolge von Includes wird nach dem folgenden Schema durchgeführt: -- Eigene Headerdatei -- Leerzeile -- C System Header -- Leerzeile -- C++ Standardbibliotheken -- Leerzeile -- Andere Bibliotheken -- Leerzeile -- Projektheader */ #ifndef CODE_CONVENTIONS_H #define CODE_CONVENTIONS_H #define KONST_TO_SHOW #include "code_conventions.h" #include <sys/types.h> #include <unistd.h> #include <string> #include <vector> #include "another_header.h" class ClassForDemonstration { private: byte member_example_1; byte memberExample2; public: byte get_member_1() { return member_example_1; }; byte getMember2() { return memberExample2; }; void set_member_1(byte aValue) { member_example_1 = aValue; }; void setMember2(byte aValue) { memberExample2 = aValue; }; }; ClassForDemonstration demo_object; void setup() { Serial.begin(115200); } void loop() { fill_object(demo_object); serial_out_object(Serial, demo_object); Serial.println(); } void fill_object(ClassForDemonstration &aObject) { aObject.set_member_1(millis()); aObject.setMember2(millis()); } void serial_out_object(Stream &aStream, ClassForDemonstration &aObject) { aStream.print(aObject.get_member_1()); aStream.print("\t"); aStream.print(aObject.getMember2()); } #endif