Peut-être que je suis seul dans ce domaine, mais peu de choses m'ennuient comme les personnes qui utilisent des espaces plutôt que des tabulations. En quoi la saisie est-elle SpaceSpaceSpaceSpaceplus facile et plus intuitive que la saisie Tab? Bien sûr, la largeur de tabulation est variable, mais elle indique beaucoup plus l'espace d'indentation que les espaces. La même chose vaut pour le retour en arrière; retour arrière une ou quatre fois?
Pourquoi les langages comme Python recommandent-ils d'utiliser des espaces sur les tabulations?
indentation
Naftuli Kay
la source
la source
tab
. Si vous ne pouvez pas configurer cela dans votre éditeur préféré, vous avez besoin d'un meilleur éditeur.Réponses:
Cohérence, principalement.
En outre, quelque chose arrive parfois qui utilise réellement l'espace blanc - comme Python: dites-moi, que se passera-t-il si j'exécute l'extrait de code suivant?
Ensuite, il y a les cas frustrants lorsqu'un éditeur de développeur a des onglets définis sur 8 espaces, et un autre les a définis sur 4 et que quelqu'un utilise 5 pour une raison étrange ... Cela peut sembler parfaitement normal sur un poste de travail, mais lorsqu'il est archivé dans SVN et quelqu'un d'autre met à jour, ils verront un désordre horrible, horrible.
Ce sont donc deux bonnes raisons d'être toujours cohérent, que ce soit des espaces ou des tabulations.
Mais, les espaces permettent de contrôler bien plus l'indentation que les onglets et ne nécessitent aucune configuration spéciale dans les éditeurs pour que cela fonctionne. (Bien que cela puisse être plus facile - par exemple, dans vim, utilisez simplement
set expandtab
pour insérer des espaces chaque fois que vous appuyez sur tab)EDIT: Et de manière assez amusante, le site semble avoir normalisé mes onglets dans des espaces afin que le navigateur puisse les afficher correctement. Cliquez sur "modifier" pour voir l'original, onglets inclus;)
la source
Ceci est une bonne discussion sur l'indentation et les espaces en Python; de l'article:
En ce qui concerne votre argument sur la pression de la barre d'espace ou de la touche de retour arrière 2 fois ou plus, puisque la plupart des éditeurs de code source insèrent un nombre configurable d'espaces en appuyant une seule fois sur la touche de tabulation, et de la même manière que le retrait, il n'y a plus de touches enfoncées lorsque en utilisant des espaces pour l'indentation.
Pour moi, je préfère les espaces parce que le code est toujours affiché avec la même quantité d'indentation, que je le visualise dans un IDE, ou
less
, ou Bloc-notes; c'est-à-dire que les espaces sont plus portables.la source
En Python, l'indentation contrôle le flux du programme et est donc vitale.
Si vous prenez du code formaté avec des onglets et copiez-le afin que les onglets soient modifiés ou perdus, la structure du code est détruite. Les espaces sont toujours des espaces = beaucoup plus sûrs.
Si l'usure de votre barre d'espace vous inquiète, votre éditeur peut probablement être configuré pour convertir automatiquement les tabulations en espaces.
la source
.vimrc
pour moi :)set softtabstop=4
, et TAB et BACKSPACE utiliseront 4 espaces comme tabulation. (Eh bien, à chaque tabstop, en traitant la largeur comme 4 espaces)Les espaces doivent toujours être utilisés, car les onglets seuls ne sont pas suffisamment flexibles pour de nombreux styles, et le mélange des onglets et des espaces produit (presque) toujours un désordre absolu.
Pour un exemple d'un style qui nécessite généralement des espaces, considérez quelque chose comme:
À moins que vous ne souhaitiez renommer toutes vos fonctions pour être un multiple exact de la taille des onglets (moins un pour la parenthèse), les onglets ne suffiront tout simplement pas.
En ce qui concerne le mélange des tabulations et des espaces, vous rencontrez presque immédiatement un problème grave: les tabulations ne sont pas systématiquement étendues de la même manière. Certains logiciels traitent un onglet comme équivalent à un nombre spécifique d'espaces. D'autres logiciels étendent un onglet modulo d'un nombre spécifique d'espaces - par exemple, un élément après un onglet commencera toujours par un numéro de colonne qui est un multiple de (disons) 8.
Même si vous pouvez vous assurer que les espaces ne se mélangent pas avec vos onglets, vous avez toujours un problème: les onglets jouent également mal avec les polices à largeur variable. Ce problème se produit lorsque (par exemple) vous souhaitez des commentaires de fin alignés:
En l'état actuel, tous s'alignent parfaitement. Vu avec une police de largeur variable, cependant, les choses deviennent laides. Avec des espaces, les commentaires peuvent (souvent) être légèrement désalignés. Avec les onglets, cependant, le désalignement devient souvent assez radical:
Soudain, la petite différence de largeur entre le «i» et le «m» ou le «x» dans notre police à largeur variable a été agrandie jusqu'à un taquet de tabulation entier.
L'essentiel est que presque tout changement dans la façon dont vous affichez le code avec des onglets, aussi banal soit-il, peut et va généralement produire un désordre illisible.
Pour répondre à vos autres questions: d'autres l'ont déjà signalé, mais je ne peux pas imaginer que quelqu'un dans un éditeur de programmation (ou beaucoup d'autre chose) utilise réellement la barre d'espace pour insérer les espaces, donc votre question sur: "taper spacespacespacespace" est non pertinent parce que personne ne fait ça de toute façon. De même avec l'espacement arrière: il est difficile d'imaginer un éditeur qui nécessiterait d'appuyer surBkSpc quatre fois pour aller à un tabulation précédent, donc (encore une fois) la question n'est pas pertinente.
En bout de ligne: les onglets sont parfaits si vous (et seulement vous) regarderez jamais votre code, et vous ne le faites qu'avec un seul éditeur que vous ne reconfigurez jamais (du tout!) Ces conditions, cependant, sont si proches de l'impossible imposer qu'il n'y ait qu'une seule réponse raisonnable: ne jamais utiliser d'onglets du tout.
la source
Le gros problème est l'incohérence de la largeur des "tabulations" parfois elles sont rendues comme quatre espaces parfois huit. Dans de nombreux éditeurs, vous pouvez les définir de 1 à 9 espaces.
Donc, cela transforme un simple éditeur WYSWYG en ce que vous voyez est ce que quelqu'un d'autre pourrait obtenir.
C'est un problème particulier pour Python, mais c'est aussi un problème dans tous les langages "accolades" car l'indentation est utilisée pour transmettre du sens aux lecteurs humains et les onglets foirés rendent le code difficile à lire.
la source