DevCore.net

Guard Clauses: Weniger Verschachtelung, klarere Logik

Die Idee: Prüfe Ausnahmefälle zuerst und verlasse die Funktion sofort. So bleibt alles sauber.

// ❌ Tief verschachtelt
function createInvoice(?User $user, array $items) {
    if ($user) {
        if ($user->isActive()) {
            if ($items) {
                return Invoice::fromItems($user, $items);
            }
        }
    }

    return null;
}

// ✅ Guard Clauses
function createInvoice(?User $user, array $items) {
    if (!$user) {
        return null;
    }

    if (!$user->isActive()) {
        return null;
    }

    if (!$items) {
        return null;
    }

    return Invoice::fromItems($user, $items);
}

Vorteil: Weniger Einrückung, schneller erfassbar, leichter zu testen.