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.
coding-style
indentation
kiamlaluno
la source
la source
Réponses:
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.
la source
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:
la source
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!)
la source
Onglets
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 .
la source
Tous les arguments en faveur des onglets sont excellents en théorie. Mais...
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.
la source
public:
les déclarations de classes C ++ afin d’être plus jolis (en particulier pour les classes imbriquées).Quelques opinions pertinentes pouvant présenter un intérêt:
la source
Des onglets pour la victoire.
la source
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
left
pour 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
space
quand un simpletab
fonctionnerait? 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é.
la source
w
etb
(oue
etge
) pour sauter les espaces et les jetons: PPersonnellement, 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).
la source
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.
la source
softtabstop
option et des commandesretab
etretab!
.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.
la source
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.
la source
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.
la source
Pourquoi quelqu'un ne peut-il pas implémenter ceci:
Tout le monde est content de voir son propre format
Est-ce si difficile?
la source
indent
programme.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.
la source
Je suis un type à 4 espaces, les onglets ne sont tout simplement pas cohérents.
la source
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.
la source
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).
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:
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:
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 *
la source
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".
la source
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.
la source
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!
la source
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 :-)
la source