Regel
verwenden früh returns und Schutz Klauseln.
Tief Verschachtelung und späte Parameter Validierung
machen. Funktionen schwieriger zu lesen und pflegen.
Unterstützte Sprachen: 45+Einführung
Guard-Klauseln validieren Vorbedingungen am Anfang einer Funktion und kehren sofort zurück, wenn die Bedingungen nicht erfüllt sind. Dadurch wird die Verschachtelung flacher, da Fehlerfälle im Voraus behandelt werden und die Hauptlogik unverschachtelt und leicht lesbar bleibt. Funktionen, die Parameter auf halbem Weg validieren oder Erfolgspfade innerhalb mehrerer Bedingungen verschachteln, zwingen den Leser, den Kontext über viele Einrückungsebenen hinweg zu verfolgen.
Warum das wichtig ist
Lesbarkeit des Codes: Schutzklauseln machen den glücklichen Pfad am Ende der Funktion ohne Verschachtelung sichtbar. Die Leser sehen alle Fehlerbedingungen im Voraus und lesen dann die Hauptlogik auf einer einzigen Einrückungsebene, ohne mehrere verschachtelte Bedingungen mental zu verfolgen.
Wartung und Änderung: Das Hinzufügen neuer Validierungs- oder Fehlerbedingungen zu tief verschachteltem Code erfordert eine sorgfältige Platzierung, damit die bestehende Logik nicht unterbrochen wird. Durch Schutzklauseln am Anfang können neue Prüfungen hinzugefügt werden, ohne die Hauptlogik zu berühren, wodurch das Risiko der Einführung von Fehlern verringert wird.
Code-Beispiele
❌ Nicht konform:
function processPayment(user, amount) {
if (user) {
if (user.isActive) {
if (amount > 0) {
if (user.balance >= amount) {
user.balance -= amount;
return { success: true, newBalance: user.balance };
} else {
return { success: false, error: 'Insufficient funds' };
}
} else {
return { success: false, error: 'Invalid amount' };
}
} else {
return { success: false, error: 'Inactive user' };
}
} else {
return { success: false, error: 'User required' };
}
}Warum das falsch ist: Vier Verschachtelungsebenen verstecken die Hauptlogik (Gleichgewichtsableitung) tief in der Funktion. Jede Fehlerbedingung fügt eine weitere Einrückungsebene hinzu, wodurch der glückliche Pfad schwer zu finden und auf einen Blick zu verstehen ist.
✅ Konform:
function processPayment(user, amount) {
if (!user) {
return { success: false, error: 'User required' };
}
if (!user.isActive) {
return { success: false, error: 'Inactive user' };
}
if (amount <= 0) {
return { success: false, error: 'Invalid amount' };
}
if (user.balance < amount) {
return { success: false, error: 'Insufficient funds' };
}
user.balance -= amount;
return { success: true, newBalance: user.balance };
}
Warum dies wichtig ist: Guard-Klauseln validieren alle Vorbedingungen mit frühen Rückgaben und halten die Funktion auf einer einzigen Einrückungsebene. Der glückliche Weg (Gleichgewichtsabzug) ist am Ende ohne Verschachtelung deutlich sichtbar, wodurch die Funktion leicht zu lesen und zu ändern ist.
Schlussfolgerung
Validieren Sie Eingaben und behandeln Sie Fehlerfälle am Anfang von Funktionen mit Schutzklauseln. Kehren Sie frühzeitig zurück, wenn Bedingungen fehlschlagen, anstatt den Erfolgspfad zu verschachteln. So bleibt der Code flach, lesbar und leicht zu ändern, ohne die bestehende Logik zu zerstören.
.avif)
