web-dev-qa-db-fra.com

casser dans un cas avec retour .. et pour défaut

Mon OCD me fait ajouter une "pause" lors de la rédaction de déclarations de cas, même si elles ne seront pas exécutées. Considérez l'exemple de code suivant:

switch(option) {
    case 1:
        a = 1;
        b = 7;
        break;
    case 2:
        a = 2;
        b = 4;
        return (-1);
        break;
    default:
        a = -1;
        break;
}

Mes deux questions sont:
[.____] pour "Cas 2:", je n'ai pas vraiment besoin de la pause, mais c'est une bonne idée de l'avoir quand même? Pour "défaut:". Est-ce purement OCD ou existe-t-il une vraie raison d'avoir la pause ici?

39
Alan H

Vous n'avez pas besoin de pause, mais il n'y a pas de mal à les avoir. À mon avis, garder votre code structuré vaut la peine d'avoir quelques déclarations étrangères.

35
James Thompson

Je suis d'accord avec une pause dans un cas définitif par défaut et je ne suis pas d'accord avec les pauses après les retours. (Un collègue fait ceux qui me font mal les yeux.)

Je tire également des commutateurs de manière à réduire la prolifération des niveaux de retrait. :) c'est à dire.:

switch(option) {
case 1:
    a = 1;
    b = 7;
    break;
case 2:
    a = 2;
    b = 4;
    return -1;
default:
    a = -1;
    break;
}

(Je pense aussi que, puisque la déclaration de retour n'est pas une fonction, il n'est pas approprié de faire respecter un style superflu qui le fait ressembler à un.)

25
chaos

La pause après votre cas par défaut est juste une question de préférence personnelle.

Mettre une pause après le retour me semble presque contradictoire. Je supprimerais la pause, juste pour que la déclaration de retour se démarque vraiment.

8
samoz

Je considérerais la pause après le retour être une mauvaise forme, vous obtiendrez des avertissements sur le code inaccessible sur certains compilateurs.

La rupture de votre cas par défaut est complètement appropriée, le cas échéant est un outil et doit être particulièrement marqué lorsqu'il est utilisé.

2
Don Neufeld

Je préfère toujours avoir une pause dans chaque cas y compris le par défaut et évitez de revenir à tout à l'intérieur -commutateur. Pour les commutateurs courts avec seulement 2-3 cas (y compris par défaut) retour est ok, mais uniquement si tout cas Le fait de la même manière. La pause "inutile" Je vois comme inutile et ne fait que faire plus de code à lire. Ideme va pour les valeurs par défaut vides qui ne font que casser, totalement inutile. L'aise à lire le code est à mon avis plus important que ce qui se passe si quelqu'un change ceci ou cela.

2
Joakim Elofsson

Ni la rupture ne fait rien pour vous, mais ne nuit pas non plus.

Personnellement, je les laisse habituellement si j'ai un retour - mais j'essaie également d'éviter d'avoir plusieurs points de retour dans une fonction si possible.

Cependant, je pense que la pause dans le default: L'affaire est bonne - pour une raison pour une raison: si vous le laissiez sortir, et quelqu'un a ajouté un nouveau cas après défaut: le comportement serait différent si ils "oublient" d'ajouter une pause.

1
Reed Copsey

Comme d'autres l'ont souligné, plaçant une pause après un retour ou dans l'affaire par défaut est principalement une question de style personnel.

Quand je n'ai pas à suivre de règles de style spécifiques, je préfère quelque chose comme ceci:

 Switch (foo) {
 Case 0: [.____] Baz = 1; 
 Casser; 
 Case 1: Barre% = 2; 
 Retour -1; 
/* Notheached */
 Cas 2: 
 Bar = -1; [.] Retour -2; 
/* Notre haché */
 Pause; 
 Par défaut: 
 Casser; [.____]} [.____]

Entre les cas 1 et 2, j'ai tendance à préférer 2. Même si le commentaire dit notre haché, les commentaires peuvent mentir (involontairement bien sûr) lorsque le code change. J'aime le commentaire notreché car il peut satisfaire à la poire que vous savez ce que vous faites et vous rappelle que vous quittez la fonction tôt. Le raisonnement qui placera une pause après le retour atténuera les erreurs si le retour est supprimé me semble imparfait. Vous allez toujours obtenir un comportement faux, sans distinction si vous tombez au boîtier suivant ou si vous quittez le commutateur et continuez-la comme avant.

Bien sûr, si je peux l'éviter, je ne retournerais pas d'une fonction dans le corps d'un commutateur.

1
Erik

On me dit que dans C, C++, Java et C #, si vous ne mettez pas ces "pauses", le flux de code de programme tombera dans les autres "cas" et exécutera les instructions En eux, peu importe si la variable n'a pas les valeurs attribuées aux "cas".

1
Broken_Window

Dans cet exemple exact, pour les deux questions, il est préférable de préférence personnelle. En général, la règle est la suivante: n'importe quoi sans une pause tombera. Cela signifie (comme le dit POD), c'est une bonne idée de mettre des pauses dans des cas défaillants au cas où ils ne seront pas durs. Cela signifie également si votre cas contient un retour, une pause suivante n'est en effet pas nécessaire.

0
trh178

Je n'ai pas personnellement mis les pauses dans, mais cela pourrait aider lorsque quelqu'un d'autre décide de déplacer le retour (-1) à l'extérieur du commutateur et oublie d'ajouter une pause.

0
Jimmy

Je voudrais mettre la pause pour montrer que vous n'avez pas l'intention de tomber à la prochaine étape.

0
Maggie