11
votes

Meilleure pratique sur la fin si ... Sinon de déclaration sans condition d'autre

Quelle est la meilleure pratique pour mettre fin à une autre déclaration sans condition d'autre? Considérez le code suivant:

if ($direction == 'up') {
  code goes here...
}

else {
  code goes here...
}


1 commentaires

Pour autant que je sache, il n'est pas considéré comme une "mauvaise pratique" de ne pas inclure d'autre condition d'autre. Vous faites simplement ce que le script appelle, s'il ne devrait y avoir aucune réponse par défaut à quelque chose, alors n'en avez pas.


6 Réponses :


24
votes

Il n'y a pas de si ... sinon code> déclaration.
Il n'y a qu'un si code> instruction pouvant être étendue avec else code> et elseif code> opérateurs.

Alors, la meilleure pratique sur si code> instruction sans sinon code> condition est un si code> instruction sans un sinon code> condition : P>

if (condition) {
  //some code
}


3 commentaires

C'est une sorte de réponse générique qui manque le point, je pense.


@Core je pense que c'est plutôt question qui a manqué le point;) Demandez-moi une certaine question et vous obtiendrez une certaine réponse


Je suis d'accord, la question n'est pas aussi claire que possible et, à cet égard, votre réponse est précise; Mais je préférerais résoudre la question que possible voter la mauvaise réponse.



0
votes

Je pense que s'il n'y a rien à faire sur sinon , il n'y a pas besoin de else bloquer dans le code. Si le bloc sinon est inclus, cela signifie qu'elle a un but d'être là, le code est donc incomplet, s'il est vide.


0 commentaires

8
votes

n'écrivez pas vide sinon s. Cela ferait simplement encombrer le code et c'est parfaitement évident ce que vous vouliez dire.

Dans de nombreux cas, vous pouvez en réalité utiliser instruction de commutation : xxx


5 commentaires

Mais, le ne serait-il pas dans ce cas d'une déclaration d'autre? :) Pour répondre à la question au goût de l'OP, vous souhaitez supprimer la déclaration par défaut. Comme il n'est pas nécessaire d'être dans le commutateur. Cependant, vous n'avez pas à écrire vide sinon . Vous devez juste les omettre.


Je pense qu'un commutateur est la meilleure option dans ce cas.


Je voudrais lancer une nouvelle exception () au par défaut si "up" et "bas" était le seul autorisé valeurs.


@Core XII Excellente idée! Mis à jour.


Je ne peux pas prendre de crédit pour cela, c'est ainsi que D. . Et je préfère cela de cette façon. Si vous souhaitez un par défaut qui ne fait rien, vous devez explicitement le dire.



0
votes

Je le fais parfois comme ça. Je ne suis pas inquiet que "laissé" code> est interprété comme "down" code> car je valide toujours mon entrée, dans ce cas avec preg_match ('{^ vers le bas | down $}', $ direction) code>. Inargitarablement un commutateur code> code> est plus approprié ... mais je n'aime pas la syntaxe verbose.

if ($direction == "up")
    {
    // code goes here...
    }
else //if ($direction == "down")
    {
    // code goes here...
    }


0 commentaires

1
votes

Ce n'est pas quelque chose qui peut prendre une réponse définitive. Voici ma prise, il serait intéressant de voir quelles autres opinions existent.

scénario 1: Test d'une condition booléenne forte> p>

C'est le cas le plus simple: P> xxx pré>

Spécifier une condition comme sinon si code> serait redondant, et il est vraiment évident pour le lecteur ce que le code fait. Il n'y a pas d'argument pour utiliser else si code> dans ce cas. P>

Scénario 2: Test d'un sous-ensemble d'états infinis forts> P>

Nous sommes intéressés par des tests pour les conditions A et B (etc.), et nous pouvons être intéressés ou non dans ce qui se passe si aucun d'entre eux ne détient: P>

switch($direction) {
    case 'up': break;
    case 'down': break;
    default: // put error handling here if you want
}


0 commentaires

0
votes

J'essaie de ne pas écrire sinon . Déjà. Dans mon expérience, en utilisant else entraîne une logique moins lisible, en particulier lorsque si / ESSES est imbriquée.

pour attribuer un VaR à true ou false (ou tout autre simple cette valeur ou de cette valeur), j'utilise toujours: xxx

lorsque j'ai un gros morceau de logique que vous pourriez envisager "appartient "Dans l'if / sinon, je m'assure de structurer mon code de sorte que si la condition soit remplie, la fonction se termine, généralement en retournant: xxx

comme PhiHAG mentionné; utiliser un switch déclaration lorsque vous considérez elseif .

Et comme votre bon sens déjà dit, il n'y a pas de bonnes pratiques, mais il existe des bonnes pratiques, et je pense que c'est un.


0 commentaires