-
Notifications
You must be signed in to change notification settings - Fork 2
Styleguide
Lukas Radermacher edited this page Jun 13, 2022
·
10 revisions
- An den Linter-Tests orientieren
- Kein defensives Klammern
- Methodenkategorien und -benennung überdenken
- Messages in
camelCase
benennen - Parameter nach dem Schema
a(n)Type
benennen - Über Accessoren auf Instanzvariablen zugreifen. Direkter Zugriff nur aus den Accessoren
- In Iiteratoren domänenspezifische Namen verwenden (zum Beispiel
points do: [:point | ...]
stattpoints do: [:each | ...]
- Wenn Kaskaden als Wert verwendet werden,
; yourself
am Ende verwenden^ self createSomething applySomething: 'Hello'; applySomethingElse: 'World'; yourself
- Auch auf Klassenseite überprüfen
- Auch automatisch generierten Code (insbesondere Accessoren) entsprechend anpassen
- Erste Zeile: Methodenname und Parameter
- Zweite Zeile: Kommentar (bei Bedarf)
- Eine freie Zeile, bevor der Methodenkörper beginnt. Der Kommentar steht, falls vorhanden, oberhalb der freien Zeile, die lokalen Variablen unterhalb der freien Zeile
- Alles außer dem Methodennamen ist eingerückt
someMessageToProcess: anObject
"This comment explains the purpose of this method"
|local1 local2|
self doSomething.
^ self
- Keine trailing whitespaces
- Punkte mit Leerzeichen um das
@
angeben:x @ y
- Ebenso Leerzeichen um alle binären Operatoren (
1 + 2
etc.) - Leerzeichen zwischen
^
und dem zurückzugebenden Ausdruck - Keine Leerzeichen auf den Innenseiten von Klammern
-
[:parameter | self doSomethingWith: parameter]
statt[ :parameter | self doSomethingWith: parameter ]
-
(1 + 2) * 3
statt( 1 + 2 ) * 3
- entsprechend für weitere Klammern
- Diese Regel gilt auch für die
|
-Symbole für lokale Variablen
-
- Nicht mehrere leere Zeilen in Folge
- Keine Newline am Ende der Methode
- Nie mehr als ein Statement in einer Zeile
- if-branches (
ifTrue:
,ifFalse:
, ...) eingerückt in einer neuen Zeile platzierenself evaluateCondition ifTrue: [self doSomething]
- Schleife mit nur einem Statement in einer Zeile schreiben, zum Beispiel
xy do: [:entity | entity]
- Kaskadierung: Falls mehrere Nachrichten an das gleiche Objekt gesendet werden, Kaskaden nutzen. Dabei jede Nachricht eingerückt in eine eigene Zeile, keine Nachricht in der gleichen Zeile wie der Receiver:
receiver message1; message2; message3
- Das letzte Statement einer Methode wird nicht mit einem Punkt abgeschlossen
- Ebenso besitzt das letzte Statement eines Blocks kein Punkt