Onglets ou espaces - quel est le caractère d'indentation approprié pour tout, dans toutes les situations, jamais? [fermé]


84

Les normes de codage du code hébergé sur drupal.org suggèrent d’utiliser deux espaces pour indenter le code; d'autres sites suggèrent d'utiliser des onglets pour indenter le code.

Quel est le caractère d'indentation approprié pour tout et dans toutes les situations? S'il vous plaît expliquer la réponse que vous donnez.



13
IDE par défaut FTW - il suffit d'appuyer sur la touche de tabulation pour voir ce qui se passe
utilisateur281377

Quoi que vous choisissiez, il doit être utilisé par toute l’équipe, mais pas lorsque l’on utilise les tabulations des autres espaces.
Disciple du

1
J'ai essayé de le modifier pour corriger le fait que les tabulations / espaces sont le seul moyen d'indenter du code. La modification a été supprimée, mais j'espère que ce commentaire restera: Au lieu d'utiliser des caractères d'indentation, pourquoi ne pas utiliser la marge de gauche? - cela peut être entièrement automatisé par l'éditeur et les traitements de texte le font depuis des décennies.
pgfearo

4
Je ne pense vraiment pas qu'il devrait y avoir une réponse "acceptée" ici. Le fait que la réponse avec moins de voix soit la première est la preuve première: pourquoi le demandeur devrait-il obtenir un pouvoir spécial (c’est-à-dire pouvoir mettre sa réponse préférée en premier) simplement parce qu’il a posé la question?
Dean Harding, le

Réponses:


129

Les espaces

Un onglet peut avoir un nombre de colonnes différent selon votre environnement, mais un espace correspond toujours à une colonne.

En termes de nombre d'espaces (ou de tabulations) constituant une indentation, il est plus important d'être cohérent dans votre code que d'utiliser une valeur de tabulation spécifique.


42
Votre deuxième paragraphe est faux; la réponse est 4!
Daenyth

5
@ Daenyth - peut-être si vous utilisez un langage à accolades. La plupart des Pascal / Delphi en utilise 2.
Gerry

72
Pourquoi devrais-je être mandaté sur vos 2 ou 4 ESPACES d’indentation quand un onglet peut être défini de manière dynamique et indiquer un seul niveau d’indentation?
Jé Queue

3
@MGOwen L'argument du temps de téléchargement pour le codage de site Web est facilement résolu de nos jours à l'aide de la recherche de source sur css / javascript et de la suppression des espaces sur HTML. Voir mod_pagespeed pour voir ce que je veux dire.
Evan Plaice le

42
"Un onglet peut avoir un nombre de colonnes différent selon votre environnement" Oui, c'est exactement l'avantage. Tout le monde peut le mettre à son goût et être heureux.
Andrea

249

Onglets

Maintenant, bien sûr, la cohérence compte plus que l'un et l'autre, et un bon IDE rend les différences négligeables. Cela dit, le but de ce fil est d'être une guerre sainte, alors:

Je préfère les onglets:

  • Ils sont un personnage spécialement conçu pour l'indentation
  • Ils permettent aux développeurs ayant différentes préférences en termes de taille d'indentation de modifier l'apparence du code sans changer de code (séparation des données et présentation pour une victoire proverbiale!)
  • Il est impossible de mettre en retrait à moitié quelque chose avec des onglets. Ainsi, lorsque vous copiez du code provenant d’un site Web utilisant 3 espaces dans votre fichier en retrait de 4 espaces, vous n’avez pas à faire face à un désalignement.

12
Que diriez-vous de copier ce code en retrait de 3 espaces dans votre fichier en retrait de tabulation, pour lequel vous avez défini vos onglets sur 3 espaces? Quand vous envoyez votre code à vos compatriotes, ils se demandent pourquoi cette fonction a une si mauvaise indentation!
Wayne Werner

27
Les tabulations ne sont pas conçues à l'origine pour l'indentation, elles le sont pour la tabulation et font un travail épouvantable ...
Timwi

14
@ Timwi: Wikipedia semble indiquer qu'ils sont destinés à déplacer le curseur à la suite d'un ensemble de colonnes fixes. Ne semble pas que la tabulation était la fonction principale. En outre, je faisais référence à l'ère de la post-machine à écrire.
Fishtoaster le

40
De plus, beaucoup de programmeurs passent beaucoup de temps à écrire en html, css, etc. Exemple: cette page sur laquelle vous vous trouvez actuellement chargée au moins 10% plus lente que prévu, car l’équipe SE a utilisé des espaces . Vérifiez par vous-même.
MGOwen

23
Un autre avantage de cette approche - moins d’appuis sur les touches lors de l’utilisation des touches fléchées pour la navigation gauche-droite.
Nicole

117

Utilisez des tabulations pour indenter le début de la ligne, un onglet par niveau d'indentation, et laissez tout le monde choisir la largeur souhaitée.

Utilisez des espaces si vous alignez des caractères dans une ligne afin qu'ils soient toujours alignés quelle que soit la taille de la tabulation.

Et trouver et frapper tous les premiers auteurs de logiciels qui ont laissé cette chose stupide devenir un problème en premier lieu.
(Sérieusement, pourquoi est-ce même quelque chose dont on discute? Ensuite, vous allez me dire que vous voulez également utiliser plusieurs caractères pour les sauts de ligne!)


33
Oui oui oui oui oui. Cent pour cent oui. Cela permet à chacun de définir sa propre largeur de tabulation tout en préservant la mise en forme tabulaire. Si vous êtes inquiet de ne pas dépasser 80 colonnes (comme vous devriez probablement l'être!), Il vous suffit de choisir une taille de tabulation maximale attendue arbitraire (telle que 4) et de rester dans les marges des onglets de cette largeur. Honnêtement, est-ce si difficile?
Jon Purdy

Oui, mais n'utilisez pas d'espaces pour vous aligner dans une ligne. Vos collègues utilisent peut-être une police proportionnelle pour que votre illustration ASCII ait l’air bizarre sur leurs écrans.
paperjam

3
Ceci est la seule réponse correcte ici
J.Ashworth

76

Onglets

  • permettre que les erreurs soient plus visibles , il est ennuyeux de gérer au minimum les espaces.
  • sont cohérentes , elles ne sont utilisées que pour l'indentation, à moins que vous ne commentiez mal.
  • sont personnalisables , vous pouvez spécifier dans les options de l'éditeur leur largeur.
  • sont plus productifs , pourquoi tapez 4 espaces quand vous pouvez appuyer sur 1 onglet.
  • prendre moins de taille que plusieurs espaces.
  • prendre plus d'espace qu'un espace.
  • prenez moins de temps pour passer .
  • ont tendance à mieux fonctionner dans les IDE.

Les espaces doivent être utilisés lorsque les onglets sont complètement inutiles.

Même pour aligner les paramètres et les commentaires, les onglets fonctionnent toujours mieux .


24
wt "plus productif", personnellement, je frappe sur TAB et laisse l’IDE ​​effectuer la conversion pour le nombre approprié de caractères d’espace à introduire. Peut-être que vous avez besoin de mettre à jour: p?
Matthieu M.

3
-1: Erreurs plus notables: pas vrai; cohérent: difficilement personnalisable: oui, mais c'est aussi un désavantage; plus productif: il est faux, pratiquement tous les ides peuvent convertir des tabulations en espaces; moins de taille: oui, mais pratique? non; moins de temps: non avec IDE raisonnable; ont tendance à mieux fonctionner: pas du tout si vous utilisez plusieurs environnements et outils
MaR

@MaR: Les erreurs notables sont vraies, la largeur d'un onglet est plus grande. Aussi ... Python! Les onglets sont cohérents, car un seul onglet est une indentation, alors que vous devez sinon définir le nombre d'espaces que vous utiliserez pour une indentation. La personnalisation est un avantage. Vous utilisez des onglets en premier lieu, donc c'est plus productif. On dirait que vous ne pouvez même pas expliquer pourquoi c'est irréalisable, les haïsseurs vont détester ...;)
Tamara Wijsman

@TomWij: Comment l'onglet est-il plus grand qu'un nombre équivalent d'espaces? Python est pratiquement le seul langage à avoir obtenu le droit d’utiliser des tabulations en toute sécurité (mais cela n’est pas vraiment un avantage comparé à "insérer des espaces"). Essayez également d’autres langages, environnements hérités, diffs / merges, terminaux, sccs pour voir pourquoi les onglets sont encore utopiques "idéaux".
MaR

@MaR: Où ai-je déclaré «nombre équivalent d'espaces»? J'ai essayé tous ceux-là, les onglets fonctionnent parfaitement en eux!
Tamara Wijsman

41

Tous les arguments en faveur des onglets sont excellents en théorie. Mais...

En théorie, la pratique et la théorie sont les mêmes. En pratique, ils ne le sont pas.

Oui, avec les onglets, vous pouvez décider de votre niveau d'indentation. Et oui, vous pouvez utiliser une combinaison d'onglets et d'espaces pour aligner les éléments. Et dans un monde idéal, il serait

En réalité, vous ne pouvez pas voir la différence entre les espaces et les tabulations, elles semblent toujours être mélangées lors du déplacement du code, et afficher le code dans un autre programme comportant des tabulations définies sur 8 colonnes est une gêne.

J'avais l'habitude d'utiliser des onglets. Ensuite, j'ai commencé à travailler en équipe et à partager du code. Je suis rapidement devenu un partisan des espaces. Ainsi, bien que je puisse comprendre l’utopie des onglets, je ne peux pas imaginer ne pas utiliser d’espaces.


6
vous pouvez obtenir un éditeur comme Kate, qui présente des onglets avec un caractère 'fantôme' - je peux facilement voir les onglets par rapport aux espaces lors du codage.
HorusKol

8
Chaque éditeur a maintenant une option "Afficher les espaces" et Visual Studio a une option "Tabify"
Chris S

2
Bon argument. C'est la raison pour laquelle j'ai renoncé à essayer de convaincre les gens que les onglets sont plus logiques. Même les programmeurs qui devraient être habitués à la pensée abstraite semblent confondre les onglets et les espaces ("si cela ressemble à quatre espaces, alors il faut que ce soit quatre!"). Le clou dans le cercueil pour moi était qu'il semblait impossible de configurer Emacs pour qu'il indente uniquement avec des onglets.
Martin Vilcans

3
+1 L'utopie des tabulations est géniale, mais chaque fois que j'ai déplacé du code entre des éditeurs de largeurs de tabulation différentes, le code a été foiré et mal aligné. Il est trop facile de faire la mauvaise chose en silence avec les onglets.
Mankarse

J'avais aussi l'habitude d'utiliser des tabulations, mais j'avais des problèmes avec certains IDE qui ne pouvaient pas insérer d'espaces pour les lignes de continuation et je détestais remplacer tous ces onglets insérés automatiquement par des espaces (Visual Studio était l'un d'entre eux). Je me suis donc contenté d'espaces. Les espaces plus vous permettent d’utiliser des retraits demi-taille pour des éléments tels que public:les déclarations de classes C ++ afin d’être plus jolis (en particulier pour les classes imbriquées).
jeudi

31

105
Ce n'est pas parce que tu es célèbre que tu as raison.
Jé Queue

@Xepoch: avez-vous lu leur logique :)?
Matthieu M.

5
@ Matthieu M., oui, j'ai lu chacun, mais je ne suis toujours pas d'accord. Je n'aime pas les olives non plus, mais je ne me trompe pas parce que les autres aiment. Je trouve ridicule que les gens n'utilisent pas l'onglet pour l'indentation, mais c'est pourquoi ils les appellent CS holy wars ...
Jé Queue

2
@Xepoch: oui, je suppose que tout le monde a le droit d'avoir son opinion :) Je pense néanmoins que Guido a souligné le problème principal: mélanger les onglets et les espaces est néfaste, car les deux apparaissent comme des "espaces vides" pour l'utilisateur.
Matthieu M.

3
@Fishtoaster: Quand vous dites que Joël dit des espaces, le lien ne devrait-il pas être lié à une citation de Joël? Le lien mène simplement au forum JoelOnSoftware où des personnes (qui ne parlent probablement pas pour Joel) discutent des onglets et des espaces.
Andreas Magnusson


20

J'ai absolument. haine. 4. espaces.

Pourquoi? Principalement parce que je suis fatigué de naviguer dans mon code avec un clavier et de devoir constamment appuyer left left left leftpour dépasser une indentation. Cela est né à partir des premières versions de Notepad ++ et même du bloc-notes Windows ordinaire, où il n'existait pas de bouton de format. J'ai eu tellement de problèmes quand les gens n'utilisaient que 3 alors que j'en avais utilisé 4 partout ailleurs, entre autres.

L'autre raison est que le caractère de tabulation existe spécifiquement pour l'indentation et n'a été adopté que plus tard pour la navigation. Pourquoi faisons-nous space space space spacequand un simple tabfonctionnerait? Pourquoi les IDE devraient-ils traiter correctement le code et le format 2-5 espacés alors qu’un simple onglet et une option de préférence fonctionneraient?

Malheureusement, je suis la minorité.


31
Vous êtes inefficace à la navigation par code clavier. Vous devez utiliser les touches CTRL + GAUCHE et CTRL + DROITE pour ignorer les espaces et les jetons. Donc, l'indentation n'aurait pas d'importance.
Wizard79

7
D'où vient cette idée fausse selon laquelle «les onglets existent spécifiquement pour l'indentation»? Les tabulations sont appelées tabulateurs (tabulators) car elles ont été inventées pour la tabulation et non pour l'indentation . Elles font un travail épouvantable à la fois.
Timwi

7
@ Lorenzo: Vous êtes inefficace à la navigation par code clavier. Vous devez utiliser wet b(ou eet ge) pour sauter les espaces et les jetons: P
R. Martinho Fernandes le

6
Par souci d'un plaidoyer diabolique: n'infligez pas de code mal formaté aux éditeurs que vous considérez comme inférieurs. Utilisez les onglets.
Jon Purdy

11
@ Timwi: désolé de necro, mais la touche de tabulation de l'ordinateur N'A PAS été inventée pour la tabulation. La version TYPEWRITER de cette clé existait déjà, mais au moment où les claviers ont évolué pour être utilisés avec des ordinateurs, la touche de tabulation était utilisée pour indenter plus que la tabulation et le terme "tabulation" était devenu synonyme de indent. Les onglets pour ORDINATEURS doivent être indentés, et ce n’est que par convention que le nom de la clé correspond à celui de la machine à écrire. Votre argument s'apparente à prétendre que la touche de retour d'ordinateur avait pour but de commencer une nouvelle ligne et de déplacer le curseur à l'extrême gauche, car c'est exactement ce que c'était pour une machine à écrire :)
Beofett

12

Personnellement, j'aime utiliser des onglets dans tout, car chaque développeur peut contrôler la quantité d'indentation par onglet. De cette façon, vous obtenez une flexibilité d'affichage.

Cela étant dit, je reproduis généralement le style de codage dans le fichier (car je passe beaucoup de temps à effectuer des travaux de maintenance).


3
Cela se brise dès que vous commencez à mettre en retrait pour autre chose que l'imbrication d'instructions. Par exemple, si vous souhaitez aligner les arguments de la fonction sur la même colonne, un par ligne. C'est possible en mélangeant des onglets et des espaces mais très fastidieux.
finnw

2
Ce n'est pas du tout fastidieux, car cela signifie que vous pouvez parcourir la plupart du temps, puis utiliser quelques espaces plutôt que de devoir taper des dizaines d'espaces uniquement pour accéder à la colonne de droite.
Jordanie Reiter

1
@finnw vous supposez que tout le monde utilise une police de caractère monospaced - en 2012, un nombre important de développeurs utilisent la proportionnelle. Si vous avez des caractères non-blancs à gauche de votre premier argument, il n'y a aucun moyen de garantir que les arguments sur les lignes suivantes seront alignés pour tout le monde.
paperjam

Vous n'avez jamais essayé d'écrire HAML, n'est-ce pas?
alt

2
Je déteste dire cela, mais je ne peux pas imaginer programmer dans une police à largeur variable. La pure injustice de ce modèle est la norme des orthèses naines, onglets et espaces, tout ... est-ce que je vieillis? (Que se passe-t-il quand vous recevez un message d'erreur avec une ligne et un numéro de colonne?)
lunchmeat317

10

Je ne pense pas qu'il existe une telle indentation (du moins sans guerre mineure).

Personnellement j'aime quatre espaces. Ils me permettent de lire le code beaucoup plus rapidement et ils ont la même apparence dans tous les éditeurs, même Vi.


9
vi (ou plutôt vim) est l’un des meilleurs éditeurs pour travailler avec des onglets. En plus de pouvoir définir la largeur des onglets et de se développer automatiquement en espaces (comme la plupart des éditeurs le peuvent), vous disposez également de l’ softtabstopoption et des commandes retabet retab!.
finnw

Les bébés mourraient-ils vraiment si nous disions simplement 4 espaces, partout, toujours, pas le choix - et passions?
MGOwen

2
Quatre espaces ne se ressemblent pas partout. De plus en plus de programmeurs choisissent maintenant des polices proportionnelles dans leur IDE pour une expérience de codage plus agréable et plus productive. Quatre espaces peuvent ressembler à un retrait minuscule dans ces situations.
paperjam

8

Les espaces, car lorsque vous alignez les commentaires à la droite du code, les listes de paramètres de fonction, les expressions complexes multilignes ou des éléments de cette nature, vous souhaitez que votre superbe travail apparaisse bien pour tout le monde . Si vous utilisez des tabulations et permettez aux utilisateurs de définir leurs tabulations différemment, ils briseront l'alignement pour tous les cas les plus simples d'indentation de code.

En outre, il est manifestement évident que tout le monde doit utiliser vim, ce qui le rend simple à mettre en retrait, à annuler et à naviguer dans les "tabulations", même dans des fichiers en retrait.


C'est une très bonne fonctionnalité de nombreux éditeurs - la capacité de parcourir rapidement des monticules et des monticules d'espaces.
Christian Mann

18
On dirait que vous dessinez de l'art ASCII plutôt que de l'encoder.
Rmac

3
J'ajouterais: les tabulations ne doivent pas être utilisées pour l'alignement. Si vous êtes un utilisateur de tabulation et souhaitez aligner, vous devez d'abord taper le nombre correct de tabulations pour l'indentation et PUIS le nombre d'espaces correct pour l'alignement. Ce n’est qu’alors que le code formaté sous forme de tabulation s’applique à tous les utilisateurs et à tous les éditeurs.
MaR

6

Les tabulations sont le choix naturel et orthodoxe, car elles sont par définition utilisées pour l'indentation.

Malheureusement, les onglets sont implémentés de manière inégale. La seule solution réelle est donc de 4 espaces.


8
Depuis quand les tabulateurs sont-ils utilisés pour l'indentation «par définition»? Par leur définition même, ils ont été inventés pour la tabulation (bien qu'ils fassent un travail affreux à cela aussi).
Timwi

2
Techniquement, la clé de retour a été inventée pour déplacer la tête de la machine à écrire à l'avant de la ligne, alors que le passage à la ligne suivante était effectué en faisant tourner le rouleau. Plus tard, la touche de retour fera également automatiquement avancer le rouleau. Cependant, vous ne voyez pas les gens s'accroupir dans la touche Entrée / Entrée. La touche de tabulation a été clairement ajoutée aux ordinateurs pour effectuer une indentation. C'est un analogue numérique de la butée, que j'avais sur ma vieille machine à écrire non électrique. Les taquets de tabulation peuvent être configurés pour déplacer le rouleau dans la position que vous avez choisie, presque identique au rôle actuel de la touche de tabulation dans l'indentation.
Jordanie Reiter

@JordanReiter RE: "Vous ne voyez cependant pas les gens se bloquer sur la touche Entrée / Entrée cependant.": N'avez-vous jamais fait face à CR (représente le déplacement de la tête de la machine à écrire vers l'avant de la ligne) / LF (représente la rotation du rouleau à la ligne suivante) questions?
Max Nanasy

1
Oui, mais c’est vraiment un problème de système d’exploitation, pas un problème de clavier. Quel que soit l'ordinateur sur lequel vous vous trouvez, vous vous attendez à devoir appuyer sur la touche Entrée ou Retour pour vous rendre au lien suivant. Vous n'utilisez pas une clé pour émettre un saut de ligne et une pour émettre un retour chariot.
Jordanie Reiter

4

Vous avez évidemment besoin d'une approche combinée.

Si vous partagez du code avec d'autres développeurs, vous devez normaliser, et comme c'est impossible (koff koff), vous devez obliger tout le monde à faire quatre espaces.

Ensuite, vous avez besoin d’un éditeur assez intelligent pour ne pas être stupide à ce sujet, pour savoir qu’il devrait traiter une ligne avec quatre espaces devant elle comme si elle était en retrait. Tout éditeur moderne ou IDE peut programmer automatiquement le code avec des espaces à la place des onglets.


4

Pourquoi quelqu'un ne peut-il pas implémenter ceci:

  • le code est stocké dans un format compact avantageux pour le système en question
  • à mesure que chaque développeur ouvre le code, il est formaté exactement comme il le souhaite
  • quand ils en auront fini, revenons au format compact

Tout le monde est content de voir son propre format

Est-ce si difficile?


2
Parce que je n'ai pas assez de temps libre pour réparer tous les éditeurs et IDE existants utilisés par les gens, et même si c'était le cas, il serait encore plus difficile de convaincre tout le monde de la mettre à niveau.
Peter Boughton le

Je suis sûr qu'ils pourraient l'intégrer à SVN ou trouver un autre moyen de ne pas utiliser les outils finaux.
Adolf ail

13
Cela ressemble un peu aux onglets. Chaque développeur ouvre le fichier et obtient la largeur d'indentation souhaitée.
Rmac

1
Vous pouvez déjà configurer RCS ou CVS pour utiliser le indentprogramme.
Jé Queue

3
et il est prudent d'utiliser l'indentation pour forcer l'indentation / le code pour la normalisation afin que les développeurs avec des idées d'espacement amusantes ne soient pas blâmés / annotés pour toutes ces modifications de formatage
Tim Williscroft

3

Des espaces ou des onglets - Atwood dit vraiment qu'il faut choisir une chose et rester cohérent dans son projet. Le seul saint graal de la mise en forme du code est de s’assurer de sa cohérence afin que le psychopathe qui maintient votre code après vous ne se sente pas obligé de remédier définitivement à la situation.

Cela dit, si vous travaillez en Python ou dans un autre langage où les espaces sont une construction de programmation réelle, je ne peux pas imaginer utiliser des tabulations.


4
J'utilise des onglets. Je ne sais pas si vous avez fait de la programmation Python, mais c'est l'indentation relative qui compte. Si la ligne 1 correspond à x indents et la ligne 2 à x + 1, elle est considérée comme plus indentée. Les retraits peuvent être des doubles espaces, 4 espaces, des tabulations, peu importe tant que vous êtes cohérent.
Macha

@Macha - Merci pour les commentaires. Je n'ai jamais travaillé sur le développement Python, mais ceux qui m'ont déjà dit qu'ils utilisent des espaces, il est donc intéressant de rencontrer quelqu'un qui utilise des onglets.
Noah Goodrich

3
J'utilise des onglets avec Python au travail. C'est terrible.
rhettg

3

Je suis un type à 4 espaces, les onglets ne sont tout simplement pas cohérents.


5
Comment sont-ils "pas compatibles"? Ils sont toujours un seul caractère représentant un seul niveau d'indentation. C'est la définition même d'un schéma d'indentation cohérent. (Et que vous puissiez personnellement, sans affecter qui que ce soit d'autre, rendre visuellement que n'importe quelle façon que vous choisissez est un avantage .)
Courses de légèreté en orbite Le

3

Apparemment, les onglets gâchent Delphi, donc je n'utilise pas les onglets dans Delphi.

Cependant, je fais tout le reste avec Emacs et utilise toujours des onglets car ceux-ci vont exactement là où je veux.


Pouvez-vous donner un exemple de cela? Honnêtement, je suis curieux parce que j'utilise Delphi depuis 15 ans et que je n'ai jamais vu cela.
GrandmasterB

1
edn.embarcadero.com/article/10280#4.3 C'est juste le guide de style, mais nous avons eu quelques erreurs étranges que je ne peux pas expliquer à cause des onglets. Cela peut également être dû à Visual Source Safe. Je ne peux pas l'expliquer, cela fait simplement partie des traditions de notre société.
Peter Turner le

1
Le problème est que les valeurs d'installation par défaut pour (au moins) certaines versions de Delphi ne correspondent pas aux idiomes Delphi habituels. Donc, vous vous retrouvez avec un code qui a les deux.
Gerry

3

La réponse est qu'il ne peut y avoir aucun caractère d'indentation approprié pour chaque situation. La mise en forme à l'aide de caractères est inflexible et peut entraîner des conflits lorsque différents styles sont utilisés au sein d'une équipe.

La seule méthode permettant de formater le code de manière parfaite et flexible avec différents styles de formatage consiste à le faire virtuellement, c'est-à-dire sans caractères d'indentation. Le seul éditeur de code que je connaisse qui supporte ceci est celui utilisé dans l'exemple ci-dessous:

Pour illustrer le formatage virtuel , la capture d'écran ci-dessous provient d'un éditeur XSLT * qui utilise cette méthode d'indentation (une courte vidéo est également disponible ici ). Tous les caractères du XSLT ont été surlignés en jaune, à des fins d’illustration, afin de permettre aux seuls caractères de tabulation ou d’espace du contenu d’être clairement vus. L'indentation du code est gérée par le système de rendu de l'éditeur en ajustant la marge gauche (qui a un fond blanc).

entrez la description de l'image ici

Le seul caractère d'espace précèdent les livres lignes, parce que c'est le contenu du texte littéral, pas de code, doivent être conservés ces espaces.

Avec le formatage virtuel, vous choisissez la largeur d’indentation en fonction de l’environnement et du style d’indentation sans affecter les caractères du fichier source. Vous pouvez même définir la largeur d'indentation sur 0, si vous avez besoin d'une vue aplatie du code, comme indiqué ci-dessous:

entrez la description de l'image ici

Pour mettre cela en contraste avec le formatage des caractères d'espacement, le même XSLT ouvert dans un éditeur sans formatage virtuel est transformé par le formatage automatique de cet éditeur en ceci:

entrez la description de l'image ici

Les blocs jaunes plus grands de la capture d'écran ci-dessus indiquent clairement les espaces ajoutés par le formateur de l'éditeur classique. Malheureusement, ceux-ci ne peuvent désormais plus être distingués du contenu réel, il faudrait donc modifier le XSLT pour corriger ce problème.

Sommaire

XSLT est peut-être un cas extrême, mais ce principe est valable pour de nombreux langages de programmation: les caractères doivent être utilisés pour le contenu et une méthode alternative doit être recherchée pour le formatage.

** Divulgation: l'éditeur XSLT avec formatage virtuel a été développé par ma propre entreprise *


1
Malheureusement, vous avez probablement environ 50 ans d'avance sur votre temps. L'idée franchement absurde que les programmes sont des séquences de caractères est encore profondément ancrée dans l'esprit de la plupart des programmeurs.
Tom Anderson

3

Pas mentionné jusqu'à présent: il y a des langages (Python, Haskell) où l'indentation est importante. Mais 1 caractère compte pour 1 caractère, qu'il s'agisse d'un espace ou d'une tabulation, de sorte que l'indentation vue par le compilateur peut ne pas être identique à celle que vous voyez à l'écran si vous utilisez des tabulations.

Par conséquent, dans des langues comme Haskell, les espaces sont un must. Dans Makefiles, les onglets sont un must. Dans tous les autres cas, c'est une question de goût personnel et de nos jours pas grand chose - chaque bon éditeur possède une commande "(majuscule) onglets" et "(majuscule) espaces".


2

J'avais l'habitude d'utiliser des espaces, mais ces derniers temps, je me sers de tabulations uniquement parce que c'est ce qu'a défini Eclipse lorsque j'ai finalement remarqué. Tous les autres développeurs de mon équipe utilisent Eclipse. Il était donc logique de normaliser les onglets lorsque nous nous sommes rendus compte que nous les utilisions déjà depuis longtemps et qu'il n'y avait aucune raison de changer d'espace. J'ai été surpris de constater à quel point cela n'a pas été un problème.

Définir la taille de l'onglet affichée sur 3 ou 5 caractères dans votre IDE simplifie grandement la distinction entre les sections de code indentées par des espaces (presque toujours 4 ces jours-ci) et celles qui sont indentées par onglet.


1

Beaucoup d'arguments ont déjà été présentés, mais personne n'a précisé où nous pourrions nous diriger à l'avenir .

Onglets ni espaces!

Idéalement, le code devrait être considéré comme une donnée et ne pas être stocké dans un formatage de texte spécifique. Tout développeur peut appliquer sa propre vue préférée. En outre, cette vue ne doit pas être limitée au texte , mais peut inclure des tableaux, des sélecteurs de couleurs et des formules mathématiques.

Cette idée n'est pas trop farfelue. Le système de méta-programmation (MPS) de l' éditeur de programmation orientée vers le langage de JetBrain m'a d'abord fait comprendre que cela résout toute la discussion, en ajoutant simultanément de nombreuses possibilités supplémentaires. (Oui, cela est possible avec les plug-in d'éditeur, mais travailler sur du texte ajoute directement de nombreuses complexités inutiles, par opposition à l'approche adoptée par MPS.)

Contrairement aux tabulations et aux espaces, il y a peu d'inconvénients à mentionner lorsqu'on travaille directement sur des arbres de syntaxe abstraits . Tout ce dont nous avons besoin est que la technologie devienne un produit commercialement viable. Les premiers signes de cela apparaissent. Construit en grande partie sur MPS, un éditeur commercial de scripts actionscript, Realaxy a été créé.

J'adorerais voir l'un des grands acteurs utiliser le concept de cette technologie et voir ce qui se passe!


0

Ni est meilleur, ni est pire. La seule chose importante est d'être cohérent.

Si vous êtes une équipe de 1, choisissez ce que vous aimez personnellement. Examinez le comportement par défaut de votre éditeur favori, mais choisissez ce que vous voulez.

Si vous faites partie d'une équipe, faites ce que l'équipe fait. Période.

Dans mes divers travaux, j'ai utilisé deux espaces, quatre espaces, huit espaces, des onglets, des espaces-et-des-onglets, je pense avoir peut-être également utilisé un espace. Je dis à mon éditeur quoi faire alors je n'y pense plus, l'éditeur prépare les détails.

La seule autre chose à faire est de choisir un éditeur intelligent. Emacs ou vi? Maintenant c'est une guerre sainte que je suis prêt à combattre :-)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.