Question

J'ai constaté qu'il existe de nombreuses instructions if-else, en particulier des instructions imbriquées if else, qui rendent mon code moins lisible. Comment réduire le nombre d'instructions if else en PHP?

Mes conseils sont les suivants: 1.Utilisez une instruction switch quand elle convient; 2. Utilisez l'instruction exit () lorsque c'est faisable; 3. Utilisez une déclaration ternaire lorsque cela est réalisable;

Existe-t-il d'autres astuces qui peuvent réduire les instructions if else, notamment les instructions imbriquées if-else?

Était-ce utile?

La solution

Refactorisez votre code en unités de travail plus petites. Trop de logique conditionnelle est une odeur de code et indique généralement que votre fonction doit être refactorisée.

Autres conseils

Essayez d'utiliser "& # 8217;" retour anticipé " lorsque cela est possible afin de réduire la profondeur de nidification. Essayez d’utiliser l’évaluation des expressions booléennes.

Exemple:

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

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

    return $ret;
}

Vous pouvez réécrire ceci comme suit:

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

Il existe une méthode académique officielle pour refactoriser et simplifier de nombreuses conditions si , appelée mappage de Karnaugh .

Il utilise plusieurs conditions de test et tente de créer des instructions if simplifiées qui couvrent tous les cas requis.

Vous pouvez en apprendre davantage à ce sujet sur le wiki ici .

Utilisez l'opérateur ternaire, refactorisez votre code, écrivez une fonction ou une classe qui effectue toutes les instructions if else nécessaires.

le polymorphisme pourrait également en supprimer quelques-uns, mais plus difficile à mettre en œuvre pour réduire si / else en PHP, car il n’est pas sûr de taper ...

Je travaille sur beaucoup de code qui regorge de logique métier en constante évolution et doit être modifié tous les jours. Deux astuces qui m'ont certainement aidée à suivre les modifications sont les suivantes: éviter toutes les autres déclarations et revenir / quitter dès que possible. Ne jamais entrer dans la nidification profonde - > créer des sous-routines / fonctions.

Le remplacement de toutes les autres instructions par des instructions négatives (if) facilite grandement la lecture de votre code (la proximité de la condition et du bloc de code):

# 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 
}

Deuxièmement, retour / sortie dès que possible. Mon avis bien sûr, mais je ne vois pas l'intérêt de passer en revue des conditions / tests supplémentaires une fois que vous avez déjà déterminé le résultat du sous-programme, en particulier lorsque vous souhaitez lire le code de haut en bas. Supprimer toute ambiguïté simplifie les choses.

Pour conclure, j'aime éviter d'utiliser le reste, en particulier dans les longues listes de BL. Revenez dès que vous connaissez le résultat. Si le niveau d'imbrication est supérieur à 2, créez des sous-routines / fonctions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top