Allman-Einrückungsstil versus 1TBS bei SAS-Base-Programmen
Im Abschnitt "Links" unter dem Wikipedia-Link "Einrückungsstil" findet man den "Allman-Stil". Dieser Stil passt m.E. sehr gut zu SAS-Base und er wird bei uns (Schäfer Shop) "im Prinzip" verwendet.
Er hat zwar einen hohen Zeilenverbrauch, durch die Verwendung von 21"-Schirmen (zusammen mit normaler Schriftgröße) wird das mehr als wettgemacht. Man sieht dann 55 Zeilen Code (netto) je Bildschirm-Seite, da kann man einen "hohen" Zeilenverbrauch tolerieren.
Der große Vorteil vom "Allman-Stil" ist, dass man wunderbar mit copy&paste arbeiten kann. Jeder neuzeitliche Einrückungsstil sollte das copy&paste nicht behindern sondern erleichtern! Also lieber viele Zeilen und dafür leichter kopierbar (ich schreibe kaum ein if-then-else "frisch", ich kopiere fast immer von "obendrüber" oder von ähnlichen Stellen).
Die Steinzeitstile (z.B. 1TBS, 1TBS steht für "One True Brace Style", was übersetzt soviel bedeutet wie "einzig wahrer Klammern-Stil", siehe Wikipedia-Link) stammen aus der Zeit vor copy&paste und vor den 21"-Schirmen. Die C-Erfinder Kernighan/Ritchie hatten damals "dumme Terminals" mit 24 Zeilen je 80 Zeichen, darum kann man heute deren Zeilen-Spar-Stil getrost zu den Akten legen.
Wichtig ist uns:
- "Sparsam" einrücken. Wir rücken stur nur 2 Stellen ein, denn sonst ist man sehr schnell sehr weit rechts.
Durch das sparsame Einrücken hat man in den meisten Fällen in der gleichen Zeil noch Platz für Kommentar (unsere Zeilen sind oft 150 Zeichen breit, kein Problem beim 21"-Schirm). Durch das "Kommetar in der gleichen Zeile" spart man wieder einiges an Zeilen ein, die man zuvor "verschwendet" hat. - Macro-Variablen immer mit Punkt am Ende verwenden/schreiben!
Gründe: copy&paste klappt immer und man muß nicht dran denken den Punkt nachträglich zu setzen, wenn er nach einer Kopier-Aktion (oder Code-Änderung) plötzlich doch zwingend nötig ist. - title-Befehl immer "aussen"!
Da der title-Befehl nur zusammen mit einem put bzw. proc print Sinn ergibt, gilt er bei uns als Anhängsel zum dem betr. Data- oder Proc Step, steht aber (im Ggs. zum SAS-Style-Guide) bewußt aussen, denn die title-Anweisung wirkt bis auf Widerruf, sie ist nicht nur auf den aktuellen Proc-/Data-Step beschränkt, wie z.B. eine Zuweisung in einem Data Step.
Angepasstes Beispiel (Vorlage aus Wikipedia, Allmann-Stil):
title2 "data ausgabe bal bla bla";
data ausgabe;
set eingabe
end=end /* als Extra-Zeile, wegen copy&paste */
; /* mehrzeiliger set Befehl, desh. ; in Extra-Zeile */
if &VarNam1. < foo(&VarNam2., &VarNam3.)
then do;
haha = bar[4] + 5;..../* hier WARUM 5 (und nicht 4 od. 6) */
end;
else do;
do while &VarNam3. > 0
haha = haha + foo(&VarNam3., &VarNam3.);
VarNam3-1;
end;
VarNam1+1;
RetVal=VarNam1 + bar();
put RetVal=;
end;
if end
then do;
file print;
put "Abschluß-Meldung, Anzahl Sätze=" _N_;
end;
run;
%mend muster;
Gruß Hans Kneilmann, Schäfer-Shop
