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 d'indentation de la "case" 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?
- N'a pas réalisé jusqu'à aujourd'hui! C'est probablement parce que l'interrupteur a été inventé avant l'indentation))
- NB ne tiret de l'interrupteur par défaut (et c'est plus lisible pour moi aussi)
- double possible de Pourquoi ne pas les gens alinéa C++ spécificateurs d'accès/cas énoncés?
- La documentation officielle n'est pas respecter le code de la convention: docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.11
- Idée formats avec des tirets
- IDÉE 15.0.5 il n'est pas fait pour moi. Je souhaite qu'il fait. Je préfère en retrait pour correspondre à des regroupements logiques et le commutateur est une logique d'éléments, dont les effets on veut considérer comme une unité. Donc je veux le voir comme une unité (par exemple, retrait). J'ai aussi tendance à ajouter des accolades autour des instructions pour le cas des sections de trop.
Vous devez vous connecter pour publier un commentaire.
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 le compare avec un calendrier, 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.
switch
bloc sont mis en retrait d'un niveau de laswitch
lui-même, mais lecase
s sont "outdented" d'un niveau à partir du code, ils sont mélangés avec.case
parties agissent comme des étiquettes en ce que le flux d'exécution sera de passer à travers l'étiquette du code ci-dessus dans le code ci-dessous sansbreak
. Je préfère encore les voir en retrait. Sans le tiret, il se cache, à mes yeux, laswitch
déclaration elle-même, ce qui rend difficile de voir le début des choses. Mais ce n'est qu'un véritable problème lorsqu'il y a de trop nombreux cas, et que tout un autre problème.switch
{case
} n'est pas en retrait: docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.htmlcase
s trop? Vous vous retrouverez avec 2 fermeture des accolades au même niveau d'indentation sur des lignes différentes.En 4 mots: pas de blocs, pas d'indentation.
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, que 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.
if-else
s. Bien que, depuis qu'ils sont comme des étiquettes, alors peut-être que l'indentation est plus approprié de cette façon.switch
introduit un bloc, etcase
ne l'est pas. Et pourtantcase
semble introduire un nouveau niveau d'indentation, alors queswitch
ne l'est pas.1999 officiel Oracle Les Conventions de programmation pour le Langage de Programmation Java TM (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.
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
étiquettes est plus lisible, en va de même pourprivate
,protected
etpublic
les é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...Peut-être que c'est pour garder le même niveau d'indentation que son équivalent logique exprimé dans
if
relevés? Qui est:Serait similaire à son équivalent logique: