Codeblock Source Style Guide
Wichtige Styleguide-Informationen zur Formatierung von Codeblock-Programmen
Strukturierung eines Codeblock-Programms (siehe Beispiel)
Jedes Codeblock-Programm sollte wie folgt strukturiert werden:
Beschreibung
Variablen
Konstanten
Funktionen
Eventhandler
Actionhandler
Oberflächen-Funktionen
Hauptprogramm
Dies hilft bei der Erstellung von übersichtlichem Code und optimiert hierbei den Workflow.
Tipp
Mit dem Tastenkürzel: Strg + J kann ein "template for a structured program with GUI" aufgerufen werden.
Kommentare und Code-Trennung
Allgemein
Im Allgemeinen sollte jeder Code/Codeabschnitt der nicht trivial, also nicht sofort durchschaubar ist, mit kurzen klar verständlichen Kommentaren erklärt werden. Dies hat neben einer besseren Strukturierung den Zweck, dass spätere Änderungen am Code schneller durchgeführt werden können, da erheblich weniger Zeit benötigt wird um sich in den Code einzuarbeiten.
Kommentare
Neue Codebereiche werden mit einem Bereichskopf voneinander getrennt der, bis zur Markierung des rechten Seitenrandes im Editor reicht (80 Zeichen).
Beispiel
//##############################################################################
//##############################################################################
// Konstanten
//##############################################################################
//##############################################################################
cMeineVariable := 1,
Neue Funktionen werden mit einem Funktionskopf voneinander getrennt, der ebenfalls bis zur Markierung des rechten Seitenrandes im Editor reicht.
Dieser Sollte beinhalten
(Mindestens ein vollständiger Satz. "Was macht diese Funktion?")
Rückgabe. ("Was gibt diese Funktion zurück?")
@Result: Typ - Beschreibung.
@Result: null
("Benötigt es Externes handling oder kann es dies selbst?")
@Transhandling: Extern
@Transhandling: Intern
@Transhandling: null
Beispiel
//******************************************************************************
// MeineFunktion fügt die Beiden Parameter zu einem String zusammen und
// gibt diesen zurück.
// @Result: Character - Zusammengesetzter Text aus nZahl und cText.
// @Transhandling: null
//******************************************************************************
function MeineFunktion(nZahl, cText)
result := Str(nZahl) + ' ' + cText,
end,
Kommentare im Code die mehrere Zeilen betreffen sollten bündig mit dem darunterliegenden Code abschließen.
Beispiel
// Mein Kommentar
while not Bedingung do
// Anweisungen
end,
Kommentare im Code die eine Zeile betreffen sollten hinter dem Code stehen.
Beispiel
cMeineVariable := 1, // Diese Variable = 1
Funktionslänge
Eine Funktion sollte nie länger als 50 Zeilen sein! Nur in absoluten ausnahmen mehr.
Einrückungen
Einrückung immer drei Leerzeichen.
Beispiel
function BeispielFunktion()
startseq,
while Bedingung do
if Bedingung then
// Anweisungen...
else
// Anweisungen...
endif,
end,
stopseq
end,
Allgemeine Namensgebung
Namen für:
Programme
Funktionen
Variablen
sollten wenn möglich einen sprechenden Namen erhalten. Hierbei ist darauf zu achten, dass der Anfang jedes Wortes/Abkürzung (bei Variablen nach dem Typenprefix) groß geschrieben wird.
Beispiel
MeinNeuesProgramm
function MeineNeueFunktion()
m_cMeineNeueVariable,
Variablen
Prefixe
Programmvariablen erhalten zusätzlich zu dem TypenPrefix das Prefix: m_
Bsp.: m_cMeineVariable
TypenPrefixe:
numeric = n
Bsp.: nMeineZahlcharacter = c
Bsp.: cMeinTextboolean = b
Bsp.: bMeinBooleandatum = d
Bsp.: dMeinDatumobjekt = o
Bsp.: oMeinObjekt
Ausnahmen
Variablen für For-Schleifen etc. erhalten kein Prefix.
Beispiel
| i, j, k, l, m, n |
for i := 0 to m_nKonstanterWert do
// Anweisungen...
end,
Abstände und Trennung
Variablen werden immer mit mit einem "," und einem darauf folgenden Leerzeichen voneinander getrennt.
Beispiel
| nMeineZahl, cMeinText |
function MeineFunktion(cParameter1,nParameter2)...
Zuweisungen
Eine Variablenzuweisung ist immer durch Leerzeichen von dem Operanden und dem Wert zu Trennen.
Beispiel
cMeineVariable := 1,
Mehrere Variablenzuweisungen nacheinander sollten wie folgt strukturiert werden:
cMeinText := "text",
oMeinBoolean := true,
nMeineZahl := 1,
Die Operanden (z. B. :=, +=... ) werden hierbei dem längsten Ausdruck angepasst.
Events und Actions
Wenn Code in einer Event- oder Action-Funktion länger als ein paar Zeilen ist sollte eine neue Funktion erstellt werden, die die Logik beinhaltet. Das Event oder die Action soll dann nur noch diese Funktion aufrufen.
Beispiel
//******************************************************************************|
// Logik die durch Aktion angestoßen wird
// @Result: null
// @Transhandling: null
//******************************************************************************|
function MeineLogik()
// nicht trivialer längerer Code
end,
//******************************************************************************|
// Meine Aktion beim Klicken auf den Button
// @Result: null
// @Transhandling: null
//******************************************************************************|
function A_MeineActionExecute(Sender)
MeineLogik(),
end,