Frage

fand ich, dass es viele if-else-Anweisungen sind, vor allem, wenn verschachtelt else-Anweisungen, diese Aussagen meinen Code weniger lesbar zu machen. Wie die Anzahl der else if-Anweisungen in PHP reduzieren?

Meine Tipps sind wie folgt: 1.Verwenden eine switch-Anweisung, wenn es geeignet ist; 2.Use exit () -Anweisung, wenn es machbar ist; 3. Verwenden Sie ternäre Anweisung, wenn es machbar ist;

Gibt es noch andere Tipps, die sonst wenn Aussagen reduzieren, vor allem verschachtelt if-else-Anweisungen?

War es hilfreich?

Lösung

Refaktorieren Code in kleinere Arbeitseinheiten. Zu viel bedingte Logik ist ein Code-Geruch und in der Regel gibt an, dass Ihre Funktion Refactoring werden muss.

Andere Tipps

Versuchen Sie, „frühe Rückkehr“, wenn möglich, zu verwenden, um Schachtelungstiefe zu reduzieren. Versuchen boolean Ausdrucksauswertung zu verwenden.

Beispiel:

function foo($param)
{
    $ret = false;

    if(userIsLoggedIn()) {
        if(is_array($param)) {
            if($param['count'] > 0) {
                $ret = true;
            }
            else {
                $ret = false;
            }
        }        
    }

    return $ret;
}

Sie könnten umschreiben dies wie:

function foo($param) 
{
    if(!userIsLoggedIn()) return false;
    if(!is_array($param)) return false;
    return $param['count'] > 0;
}

Es gibt eine offizielle wissenschaftliche Methode Refactoring und eine Menge if Bedingungen, die so genannte Karnaugh-Mapping zu vereinfachen.

Es dauert in mehreren Testbedingungen und versucht, bei der Schaffung von vereinfachten if Aussagen zu unterstützen, die alle erforderlichen Fälle abdecken.

Sie können mehr über sie aus dem Wiki lernen hier .

Mit dem ternären Operator, Ihren Code Refactoring, schreiben Sie eine Funktion oder eine Klasse, die tut alle notwendigen wenn else-Anweisungen.

Polymorphismus ein paar loswerden und bekommen kann, allthough schwieriger zu implementieren zu reduzieren, wenn / sonst in PHP, da es nicht sicher ist, geben ...

ich auf eine Menge von Code arbeiten das ist voll von immer Business-Logik entwickelt und muss jeden zweiten Tag geändert werden. Zwei Tipps, die ist sicherlich hat mir geholfen, mit den Änderungen Schritt zu halten sind: alle anderen Aussagen vermeiden und dem / Ausgang so schnell wie möglich. erhalten Sie nie in eine tiefe Verschachtelung. -> erstellen Subroutinen / Funktionen

Ersetzen alle andere Aussagen mit negierten wenn Aussagen Code sehr viel einfacher machen oben zu lesen, nach unten (der Nähe des condtion und der Codeblock):

# business logic block
if ( $condition ) {
    # do something
    # code code code
} else {
    # code code code
    return;
}

# refactored:
if ( ! $contition ) {
    # code code code
    return;
}
if ( $condition ) {
    # code code code 
}

Zweitens Rückkehr / Ausgang so schnell wie möglich. Meiner Meinung nach natürlich, aber ich sehe nicht den Punkt durch irgendwelche zusätzlichen Bedingungen / Tests laufen, wenn einmal Sie haben bereits das Ergebnis des Unterprogramms bestimmt, vor allem, wenn Sie möchten, den Code von oben nach unten lesen. Entfernen aller Vieldeutigkeit macht die Dinge einfacher.

Zum Abschluss Ich mag mit anderen vor allem in langen Listen von BL zu vermeiden. Zurück, sobald Sie das Ergebnis wissen. Wenn die Verschachtelungstiefe ist mehr als 2, Subroutinen / Funktionen erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top