38 votes

Soft tabs Dur ou les onglets?

J'ai entendu dire qu'il est préférable d'utiliser des onglets, mais je ne comprends pas pourquoi ?

Aussi, est-il préférable d'utiliser 2 places ou 4 places, tandis que le codage en Ruby ? et en CoffeeScript ?

61voto

spume Points 589

Je vais probablement avoir flambé ici, mais je n'arrive jamais pourquoi les gens ne reconnaissent pas la différence entre l'indentation et l'alignement. Suis-je en arguant de la sémantique? Prendre cette [java] exemple:

public void doSomething (String varOne,
                         String varTwo) {
    // some code here
}

J'ai utilisé des caractères de tabulation et espaces ici, un onglet pour le retrait du bloc de code, mais des espaces pour aligner la pendaison déclaration d'argument. Si je change d'onglet de la profondeur à 2, ou 8, l'alignement ne sera pas jeté dehors parce que j'ai utilisé les caractères d'espace, mais où j'ai utilisé un caractère de tabulation de retrait du bloc de code, le niveau de retrait varient à la préférence du lecteur.

À l'aide d'Eclipse, j'ai mis ce que mon formatage de préférence et je trouve que c'est pris en charge très bien. De toute évidence n'est pas le cas de tous les éditeurs de texte si.

Je prends le point que tout le monde doit utiliser la même convention, bien sûr, mais j'irais même jusqu'à suggérer que la présente convention a le mérite de ces deux approches avec aucun des inconvénients. Apparemment, je ne suis pas [entièrement] seul dans cette pensée: http://www.emacswiki.org/emacs/SmartTabs enter image description here

43voto

Dave Newton Points 93112

Suivre ce que le projet utilise.

OMI deux espaces est adapté pour les Rubis et CoffeeScript.

J'utilise quatre espaces pour Java et (généralement) de JavaScript. OMI Java semble encombré avec seulement deux places, alors que moins de la cérémonie langues peuvent toujours propre avec deux. Deux est le général Ruby standard.

Concernant la raison pour laquelle les onglets sont mauvais: les Onglets Sont le Mal, ne Jamais Utiliser des Onglets

Une discussion: les Onglets vs Espaces, L'Éternelle Guerre Sainte

Le mot de "pourquoi soft tabs?" est: "c'est la seule façon de garantir la croix-rendu de l'environnement sera toujours le même. Il importe en particulier lorsque l'alignement dépend à la fois dur et doux onglets (c'est à dire, les espaces), parce qu'il ne s'alignera pas comme prévu, si le spectateur est difficile onglet largeur ne correspond pas à l'original de la dur de la largeur d'un onglet.

En d'autres termes, supposons que la deuxième ligne est à l'aide d'un dur onglet de quatre espaces:

String s1,
       s2; // In order for this to line up, you need a tab, and three spaces.

Si mon environnement local (par exemple, la visionneuse, IDE) est à l'aide d'un espace à deux onglet:

String s1,
     s2;   // Well that's not right.

Ou même pire, cat'par défaut de 8 espaces:

String s1,
           s2; // Zoinks.

Utiliser les onglets signifie que vous avez besoin de savoir l'origine du paramètre de l'onglet, et de définir ce que vous êtes à la recherche à l'utiliser, à moins qu'il n'y a jamais toutes les instances de l'onglet + espace(s) de l'indentation, ou vous n'avez pas de soins à quoi il ressemble et ne me dérange pas de changer de fichier, ce qui peut causer de l'enregistrement des questions. (Tout le monde aime ceux masse archivages après l'exécution de "Format de la Source" sur l'ensemble d'un projet.)

23voto

computrius Points 348

Par soft tabs, je suppose que vous voulez dire des espaces à la place des onglets.

Personnellement, je ne comprends pas pourquoi quelqu'un voudrait utiliser soft tabs. Je préfère toujours utiliser des onglets depuis d'autres développeurs pouvez ajuster la taille de l'onglet sans affecter quelqu'un d'autre. Avec soft tabs d'autres développeurs ont leurs propres préférences et tout le monde se termine juste en haut avec foiré l'indentation.

Aussi, soft tabs peuvent rendre vos fichiers plus gros (mais probablement pas de façon significative) parce que vous êtes à l'aide de 4 espaces (4 octets) au lieu de 1 caractère de tabulation (1 octet).

2voto

gtr32x Points 693

C'est surtout quelque chose de personnel jusqu'à ce que vous travaillez avec une équipe.

Si vous êtes juste de codage par vous-même et suit un même niveau d'indentation, alors il n'a pas vraiment d'importance.

Le problème vient quand vous travaillez avec une équipe de personnes et de chaque du style d'indentation est différent. Par exemple, Une personne choisit d'utiliser les tabulations pour l'indentation. La personne B définit son onglet de l'espace de 4 places 4 places (soft tab) pour l'indentation. Ainsi, lorsque la personne B voit personne d'Un code et de travailler avec elle, il n'y a pas de problème, les tabulations et les espaces sont des espaces 4 dans la largeur. Toutefois, lorsque la personne C, qui a 2 places largeur de l'onglet tire dans le projet, il aurez plus de chances de voir un gâchis. Cela peut en outre développer et de plus en plus de gens y contribuer. Et un plus grand impact de cette est la vitre cassée de la théorie, la base de code est excitée, les développeurs vient de mettre moins d'efforts à essayer de faire mieux. ELLE PERMETTRA D'OBTENIR DE PIRE EN PIRE.

Lors de mon précédent de l'environnement de travail. Nous avons un git après commit hook qui transforme les tabulations en espaces. Cela permet de s'assurer de garder une norme uniforme à travers la base de code.

Comme pour celle à utiliser. Comme je l'ai dit au début, c'est simplement quelque chose de personnel. Je préfère les deux espaces tout simplement parce qu'il conserve l'écran de l'immobilier. J'aime aussi éviter les onglets en raison mentionnée ci-dessus non-conforme environnements. Mais bien sûr, lorsque vous travaillez sur des projets d'équipe, utiliser ce qu'ils utilisent déjà.

2voto

Tyler Long Points 1216

Selon Python style de codage guide, 4 espaces blancs est recommandé pour le retrait. Ainsi, au moins pour Python, utilisez des espaces à la place des onglets.

Et je suis également d'avis qu'un modèle de Ruby on Rails de projet (généré par rails new [project_name]), utilise 2 espaces pour l'indentation. Ainsi, au moins pour les Rails, utilisez des espaces à la place des onglets.

Je dois avouer qu'il n'y a pas de bonne réponse. Mais je leur suggère de faire comme les autres' ne. Si la Plupart des gens autour de vous utilisez des espaces pour l'indentation, vous ne devriez pas utiliser les onglets.

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