Guard Statements statt IF-ELSE Hölle
Du kennst das sicherlich, du schreibst eine Funktion und am Ende hast du mehrere Blöcke IF-ELSE.
Klar kann es auch sein, dass dein Programmierstil etwas dirty ist, aber vielleicht arbeitest du auch einfach mit einer Sprache die kein guard unterstützt wie z.B. Typescript/Javascript.
Hier ein Beispiel, was für eine Art code ich meine:
function getClassNameByNumber(number: number): string { if (number > 100) { return "dark"; } else if (number > 50) { return "medium"; } else { return "light"; }}
Fallthrough switch#
Klar kann man bei vielen solcher Funktionen vermutlich auch ein switch nehmen, ist sich aber genauso schlecht lesen.
function getClassNameByNumber(number: number): string { switch (true) { case number > 100: return "dark"; case number > 50: return "medium"; default: return "light"; }}
guard-style in Javascript#
Nutzt man aber eine Art guard-style-Code, ist es viel viel einfacher zu lesen:
function getClassNameByNumber(number: number): string { if (number > 100) return "dark"; if (number > 50) return "medium"; return "light";}
Das echte Guard-Statement in Swift#
Achtung, guard ist eine Art negative IF. Deshalb sind die Logiken hier umgedreht. Nur wenn das Guard-Statment True ist, geht es in der Funktion weiter.
func getClassName(for number: Int) -> String{ guard number < 100 else { return "dark" } guard number < 50 else { return "medium" }
return "light"}
Fazit#
Ich denke das diese Art von Abfragen viel besser lesbar sind. Natürlich sollte man Funktionen so klein wie möglich halten und im letzten Return-Statement sollte eigentlich immer der Rückgabetyp eingehalten werden.
Grade in Swift, möchte ich guard nicht mehr hergeben.