37 votes

Onglet versus indentation espace C #

Parfois, je me retrouve à discuter de cette question avec d'autres les développeurs C#, et surtout si nous avons recours à différents styles. Je peux voir l'avantage de l'onglet indentation permettant aux différents développeurs pour parcourir le code avec leur favori taille du retrait. Néanmoins, j'ai depuis longtemps opté pour deux espace indentation dans mon code C# et ont coincé avec elle depuis. Principalement parce que j'ai souvent détesté la façon dont les déclarations s'étendant sur plusieurs lignes sont parfois foiré lors de l'affichage du code d'autres développeurs utilisant un autre onglet taille.

Récemment, un développeur, un de mes clients s'est approché et m'a demandé pourquoi je n'ai pas utiliser les onglets parce qu'il a préféré afficher le code avec une échancrure taille de 4.

Donc ma question est: quel style préférez-vous et pourquoi?

62voto

Ovidiu Pacurar Points 5129

ONGLET parce qu’il est facile d’obtenir l’indentation size vous like(2) et ceux que d’autres gens qui lisent votre code comme. La transformation inverse, de double interligne à onglet, est difficile.

50voto

peterchen Points 21792

Préférence personnelle: C# tab = 2 espaces, onglet C++ = 3 espaces, et laisser Visual Studio convertir en espaces.

Pour moi le cœur de l'onglet "vs" l'espace de discussion n'est pas de l'indentation, mais dans le code de l'alignement.

Les onglets peuvent fournir des "préférée de tout le monde indentation". Toutefois, si vous aimez le line-up des déclarations comme ceci:

switch(foo)
{
   case bar:      Do1(); break;
   case foobar_2: Do2(); break;
}

ensuite, les Onglets sont le mal. Plutôt, non de plomb dans les onglets sont le mal.

Ainsi, une norme de codage qui exige "la première ligne de l'indentation doit être onglets, pas les autres onglets sont permis" serait techniquement le meilleur des deux mondes. Cependant, je voudrais trouver une telle norme de codage à beaucoup obsédé par un petit détail. Il y a des choses plus importantes.


De toute façon, un magasin doit être en mesure de choisir l'une des normes, et les développeurs devraient être en mesure de tenir, quoi qu'il en soit.

42voto

bzlm Points 5500

Je préfère tabstops élastique. Malheureusement, le support logiciel pour eux est très limitée.

42voto

baretta Points 4391

Onglet a une signification sémantique ; Utilisez les onglets ! :)

39voto

Jez Points 4075

Si vous travaillez sur votre propre code, fondamentalement, il n'est pas question que le style que vous choisissez aussi longtemps que vous êtes en accord avec elle.

CEPENDANT, à mon avis objectivement meilleur standard pour une équipe de codage à adopter est de l'utilisation de cette règle simple:

Tabulations pour l'indentation, des espaces pour l'alignement.

Onglets doivent être utilisés au début de la ligne pour indenter le code, et que chacun peut configurer son éditeur de code pour afficher les blocs en retrait de large, est leur préférence personnelle. Toutefois, si des choses est aligné à la fin d'une ligne, les espaces doit être utilisé ou non les choses peuvent et vont sortir de l'alignement si la largeur d'un onglet est changé.

Je pense que c'est une mauvaise idée d'utiliser des espaces pour l'indentation, parce qu'il impose une certaine indentation de la largeur sur l'ensemble de l'équipe; onglets simplement augmente la flexibilité et de sacrifices pour rien. C'est pourquoi j'affirme que "les tabulations pour l'indentation, des espaces pour l'alignement" est objectivement meilleur standard à utiliser lors du codage dans le cadre d'une équipe.

D'un autre côté gentil-avantages de l'utilisation d'onglets, c'est que vous pouvez facilement commentez les lignes sans changer le code pour le droit; je le fais tout le temps lors de la conception. Avec des onglets:

Tabs image

... mais avec des espaces:

Spaces image

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