92 votes

Pourquoi l'étrange indentation sur les instructions switch?

Pourquoi est-à mon humble avis le manque d'indentation de l ' "affaire" de mots - clés dans une instruction switch considéré comme bon style?

pas de retrait de l ' "affaire" mot-clé semble être la mise en forme par défaut de l'option à propos de tous les IDE:

switch (i){
case 0:
    break;
case 1:
    break;
}

bien que je trouve ce format plus intuitive:

switch (i){
    case 0:
        break;
    case 1:
        break;
}

Est-il une logique derrière tout cela, qui m'échappe?

61voto

Johannes Schaub - litb Points 256113

Les cas sont logiquement les étiquettes. Beaucoup de gens mettent des étiquettes au même niveau d'indentation que le bloc dans lequel ils sont. À mon avis, de cette façon, il est plus facile de lire le texte.

Je compare cela avec un journal, vous pouvez faire défiler. Vous avez des marqueurs sur la ligne du temps lui-même, pas en retrait dans le contenu. Vous pouvez alors rapidement le point où les étiquettes/marqueurs sont, sans bouger de votre œil à l'écart de la ligne de base.

28voto

kriss Points 10450

En 4 mots: pas de blocs, pas d'indentation.

Les cas ne sont pas de l'ouverture d'un bloc. En C ou C++, vous pouvez même mettre des déclarations de variables (mais les initialiseurs ne sont pas appelés, sauf pour les variables statiques, c'est un piège), au début du bloc de commutateurs. Vous pouvez faire beaucoup de choses étranges avec switch, comme Duff de l'appareil.

Par conséquent, comme les cas sont de simples étiquettes, l'indentation ne semble plus intuitive, et non pas l'indentation est le style choisi par la plupart des styles.

13voto

kotlinski Points 12815

Le Soleil de code Java de la convention (section 7.8) recommande un commutateur de style où les cas énoncés ne sont pas en retrait par rapport à l'instruction switch dans son ensemble.

C'est un choix subjectif, mais le Soleil a décidé que c'est mieux si tout le monde s'en tenir à un style, et ont choisi de ce.

6voto

mingos Points 11608

Il existe différents styles d'indentation à choisir. Autant que je sache, aucun n'est considéré comme meilleur que les autres, tant que vous systématiquement utiliser un style d'indentation à tous. Pour moi, l'indentation case d'étiquettes est plus lisible, en va de même pour l' private, protected et public étiquettes dans les classes, cependant, mon IDE de ne pas faire le retrait de mon chemin. Mon code n'est pas aussi lisible que j'aimerais qu'il soit de cette façon. Eh bien...

6voto

rodion Points 6275

Peut-être que c'est pour garder le même niveau d'indentation que son équivalent logique exprimée en if relevés? C'est:

switch(i){
case 0:
  //do something 1
case 1:
  //do something 2
}

Serait similaire à son équivalent logique:

if(i==0){
  //do something 1
}else if(i==1){
  //do something 2
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X