9
votes

Comment réduire le nombre de déclarations si-d'autre dans PHP?

J'ai constaté qu'il y avait beaucoup de déclarations si-d'autre, notamment imbriquées si d'autres déclarations, ces déclarations rendent mon code moins lisible. Comment réduire le nombre de déclarations si sinon dans PHP?

Mes conseils sont les suivants: 1.Utilisez une instruction de commutation lorsqu'il convient; 2.Utilisez la déclaration de sortie () lorsque cela est réalisable; 3. Utilisez une déclaration ternaire quand elle est réalisable;

Y a-t-il d'autres conseils qui peuvent réduire si d'autres déclarations, notamment imbriquées des déclarations si elles?


0 commentaires

6 Réponses :


19
votes

refacteur 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 refactable.


0 commentaires

3
votes

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


0 commentaires

1
votes

Le polymorphisme pourrait également se débarrasser de quelques aussi, ce que bien que ce soit plus difficile de mettre en œuvre pour réduire si / sinon dans PHP car il n'est pas de type Safe ...


0 commentaires

22
votes

Essayez d'utiliser «retour précoce» lorsque cela est possible afin de réduire la profondeur de nidification. Essayez d'utiliser l'évaluation de l'expression booléenne.

Exemple: xxx

Vous pouvez réécrire ceci comme: xxx


3 commentaires

+1 Ceci est très important car il peut réduire votre taille de fichier par plusieurs Ko!


+1 s'applique également pour continuer, casser, lancer. Vous pouvez souvent garder la complexité cyclique bas de cette façon et ainsi rendre le code plus lisible.


Aussi, j'utiliserai personnellement juste retour userisisloggedin () && is_array ($ param) && $ param ['comptez']> 0; ici. C'est court et concis.



10
votes

Il existe une méthode académique officielle pour refacteur et simplifier beaucoup de conditions si conditions, appelées karnaugh mappage . .

Il faut dans plusieurs conditions de test et tente d'aider à créer des déclarations simplifiées si couvrant tous les cas requis.

Vous pouvez en apprendre davantage à partir de wiki ici .


2 commentaires

@ Desimplelife- Pouvez-vous ajouter plus d'extrait de code dans votre réponse. Un peu de temps de lecture sur Wiki est frustrant.


La carte de Karnaugh n'est pas vraiment du code. C'est plus un moyen de regarder les conditions et de les simplifier en utilisant une table.



3
votes

Je travaille sur beaucoup de code qui est plein d'une logique commerciale évolutive et doit être modifiée tous les deux jours. Deux conseils qui me sont certainement aidés à suivre les modifications sont les suivants: Évitez toutes les déclarations et revenir / sortie dès que possible. Ne jamais entrer dans une nichonnage profonde -> créer des souscriptions / fonctions.

Remplacement de toutes les instructions de tout le reste avec annulation Si les instructions facilitent votre code de lire le haut en bas (la proximité de la mentalisation et du bloc de code): xxx

Deuxièmement, retour / sortie dès que possible. Mon opinion bien sûr, mais je ne vois pas le point d'exécution dans des conditions / tests supplémentaires lorsque vous avez déjà déterminé le résultat du sous-programme, en particulier lorsque vous souhaitez lire le code haut en bas. Supprimer toute ambiguïté rend les choses plus simples.

Pour conclure, j'aime éviter d'utiliser sinon sur de longues listes de BL. Retour dès que vous connaissez le résultat. Si le niveau de nidification est supérieur à 2, créez des sous-routines / fonctions.


0 commentaires