De nombreux programmeurs, lors de leur première rencontre avec Python, sont immédiatement découragés par l'importance des espaces blancs. J'ai entendu diverses raisons pour lesquelles cela n'est pas pratique, mais je n'ai jamais entendu de plainte d'un programmeur Python.
Bien sûr, je n'ai pas rencontré beaucoup de programmeurs Python, car j'ai passé ma carrière dans le monde Java.
Ma question s'adresse donc à ceux d'entre vous qui ont participé à un grand projet Python (plus de 3 mois, Python étant le langage principal utilisé): avez-vous trouvé le problème des espaces blancs incommode et continuellement ennuyeux? Ou était-ce un non-problème une fois que vous êtes entré dans le courant?
Je ne pose pas la question parce que je suis pour ou contre Python, ou pour ou contre son utilisation des espaces blancs. Il se trouve que j'aime Python, mais je ne l'ai jamais utilisé pour quelque chose de grand.
Veuillez ne pas fournir de spéculations si vous n'êtes pas expérimenté en Python.
la source
Réponses:
Il n'y a qu'un seul cas dans lequel je trouve l'espace blanc ennuyeux, et c'est lors de la modification du code existant de sorte qu'un bloc de code doit devenir plus ou moins en retrait qu'auparavant (par exemple, ajouter ou supprimer un
if:
avant le code). Lorsque vous écrivez dans un langage comme C, vous ajoutez simplement leif
et une paire d'accolades et (dans Emacs, ou j'imagine un bon éditeur) appuyez sur Tab pour laisser l'éditeur corriger automatiquement l'indentation. En Python, vous devez le faire vous-même. Bien sûr, il existe des raccourcis éditeur pour le faire vous-même, donc ce n'est pas si mal, mais la perte de redondance impose une légère charge supplémentaire au programmeur.Dans l'ensemble, c'est une victoire, ne serait-ce que pour empêcher la moitié de mon écran d'être remplie de lignes comme celle-ci:
la source
C-c >
ouC-c <
. Mais vous devez toujours le faire vous-même. En d'autres termes, étant donné que les espaces et la logique du code ne sont pas redondants, vous ne pouvez pas simplement sélectionner un bloc géant et appelerM-x indent-region
(ou quelle que soit la version de votre éditeur) pour le mettre en retrait "correctement".J'adore les espaces importants de Python. Pour moi, c'est l'exemple parfait de DRY au niveau syntaxique. La manière lisible par l'homme d'indiquer où commence et se termine un bloc de code est l'indentation. Si vous voulez que votre code soit lisible, vous devez le mettre en retrait quelle que soit la langue. Il est stupide de faire en sorte que le programmeur spécifie ces informations deux fois, une fois pour le compilateur / interprète et une fois pour les humains. En outre, l'indentation dans les langages de type C est similaire à un commentaire: il est destiné à améliorer la compréhensibilité, mais sa signification n'est pas appliquée par le compilateur / interprète et il peut se désynchroniser avec la signification réelle (où se trouvent les accolades) très facilement, obscurcissant plutôt que clarifiant.
la source
Un espace blanc important me convient en fait . Cela me fait moins taper. Il formate le code de manière claire et sans ambiguïté. Pour cette raison, il rend le code plus lisible.
(J'aime aussi les espaces importants à Haskell, pour les mêmes raisons.)
la source
Quand j'ai utilisé python pour la première fois, le blanc était nouveau et donc une restriction ennuyeuse.
Maintenant, je ne le remarque même pas. J'utilise python depuis 11 mois.
la source
Tout d'abord - mes langages de type pain et beurre sont Python, SQL et Java. J'adore les espaces blancs de Python - c'est moins de syntaxe et de frappe, et cela oblige les gens à écrire du code lisible et bien formaté. OTOH, je déteste la verbosité de Java - à tel point que j'utilise en fait Python pour générer tout le passe-partout que j'ai à écrire en Java, ce qui impressionne tous mes collègues Java qui sont étonnés de ma productivité.
La seule grande mise en garde, cependant, est lorsque vous copiez / collez du code à partir du Web - cela provoque souvent des espaces et des tabulations mixtes qui nécessitent une étape supplémentaire pour nettoyer, et je n'attrape généralement qu'après une exception d'exécution.
la source
highlight link RedundantSpaces Error | au BufEnter,BufRead * match RedundantSpaces "\t" | au BufEnter,BufRead * match RedundantSpaces "[[:space:]]\+$"
dans mon vimrcSi un programmeur est ennuyé par l'importance des espaces blancs, il ne deviendra probablement pas un programmeur python.
la source
Je parierais que vous trouveriez un chevauchement considérable entre les personnes qui ont un problème avec des espaces blancs importants et celles qui n'ont pas d'expérience avec un bon éditeur de texte de programmeur, comme Emacs, qui gère la plupart des indentations sans leur implication.
En tout cas, une fois que vous avez internalisé Python, ce n'est plus un problème; en fait, sa concision et le petit espace qu'il occupe sur l'écran deviennent un grand avantage pour la lisibilité. Depuis que j'utilise principalement Python, je trouve des langages où il y a plus de redondance (par exemple Java et C #) difficiles à me discipliner pour écrire. Mettre des accolades autour du code dont l'indentation rend déjà sa structure claire sur mes nerfs.
la source
Pour le codage réel, ce n'est pas du tout gênant, mais réellement bénéfique (voir la réponse de dsimcha).
Cela peut être ennuyeux lorsqu'il s'agit de technologies de communication qui ne respectent pas les espaces blancs de premier plan (comme de nombreux forums Web non orientés programmation et également lors de l'intégration de code Python dans un langage différent, comme les langages de modélisation HTML), même si je vois cela comme plus d'un défaut dans les outils qui suppriment les espaces blancs principaux qu'un défaut en Python, il est vrai que les langages redondants qui expriment deux fois la structure de code sont mieux équipés pour gérer de tels environnements destructeurs (puisque vous pouvez coller le code dans un éditeur et auto- réindentation basée sur les marqueurs structurels explicites, ou tout simplement ne se soucie pas si le code est uniquement exécuté plutôt que lu par les humains).
la source
Je ne trouve pas les espaces ennuyeux. Je trouve le manque ou le retrait incohérent très ennuyeux dans d'autres langues. Je comprends que ce problème est l'un des problèmes que le style est censé résoudre.
Python n'est pas l'un de mes principaux langages.
Je trouve la gestion des tabulations et des espaces dans l'indentation ennuyeuse à l'occasion. Cela peut entraîner des problèmes lors du passage des éditeurs d'une édition à une autre, ou lors de l'édition de code écrit par quelqu'un d'autre. C'est généralement trivial à résoudre.
la source
Je viens d'un milieu C # / Javascript / XBase sans ordre particulier, et dans mes essais avec Python, ce n'est pas du tout une considération pour moi. C'est comme des accolades dans d'autres langues - c'est comme ça que ça marche, mettre les choses comme le disent les règles, et se sécher les yeux est mon attitude.
la source