2008-09-09 6 views
2

J'ai vraiment apprécié la programmation Python dernièrement. Je viens d'un arrière-plan d'un fort amour pour le codage basé sur C, où tout est peut-être plus compliqué qu'il ne devrait l'être (mais met les cheveux sur votre poitrine, au moins). Passer de C à Python pour des choses plus complexes qui ne demandent pas beaucoup de vitesse a donc été plus qu'un avantage dans l'écriture de projets. Cependant, venant de cette terre de parenthèses et de parenthèses et de structures aussi loin que l'œil nu peut voir, je rencontre un petit problème: je trouve Python difficile à lire.Amélioration de la lisibilité Python?

Par exemple, le bloc de texte suivante est difficile pour moi Déchiffrer à moins que je regarde ce (que je déteste faire):

if foo: 
    bar = baz 
    while bar not biz: 
     bar = i_am_going_to_find_you_biz_i_swear_on_my_life() 

did_i_not_warn_you_biz() 
my_father_is_avenged() 

Le problème se produit à la fin de cela, si le bloc: tous les tabulation et soudainement revenir à un bloc discordant se sent presque dérangeant. Comme solution, j'ai commencé à coder mon Python comme ceci:

if foo: 
    bar = baz 
    while bar not biz: 
     bar = i_am_going_to_find_you_biz_i_swear_on_my_life() 
    #-- while -- 
#-- if -- 

did_i_not_warn_you_biz() 
my_father_is_avenged() 

Et cela, pour une raison étrange, me rend plus capable de lire mon propre code. Mais je suis curieux: quelqu'un d'autre avec mon problème étrange a-t-il trouvé des moyens plus faciles de rendre leur code tabulé plus lisible? J'aimerais savoir s'il y a une meilleure façon de le faire avant que cela devienne une habitude énorme pour moi.

Répondre

23

Une partie de l'apprentissage d'une nouvelle langue de programmation est d'apprendre à lire le code dans cette langue. Une béquille comme celle-ci peut faciliter la lecture de votre propre code, mais elle entravera le processus d'apprentissage de la lecture du code Python de quelqu'un d'autre. Je pense vraiment que vous feriez mieux de vous débarrasser des commentaires de fin de bloc et de vous habituer à Python normal.

8

Vous pouvez essayer d'augmenter la taille de retrait, mais en général, je dirais simplement, détendez-vous, il viendra avec le temps. Je ne pense pas qu'essayer de faire ressembler Python à C soit une très bonne idée.

3

Peut-être la meilleure chose serait de tourner sur « Afficher les espaces » dans votre éditeur. Ensuite, vous auriez une indication visuelle de la distance dans chaque ligne (généralement un groupe de points), et ce sera plus évident quand cela changera.

+0

Si l'indentation n'est pas évidente à partir de l'espace lui-même, alors ce n'est pas suffisant (indentations à quatre colonnes utilisant des espaces uniquement, par PEP 8) ou vous ne le lisez pas dans une police à espacement fixe. L'un ou l'autre de ces éléments doit être corrigé avant de décider de faire apparaître les espaces comme quelque chose d'autre. – bignose

15

J'aime mettre des lignes vides autour de blocs pour faire le flux de contrôle plus évident. Par exemple:

if foo: 
    bar = baz 

    while bar not biz: 
     bar = i_am_going_to_find_you_biz_i_swear_on_my_life() 

did_i_not_warn_you_biz() 
my_father_is_avenged() 
7

Plutôt que de vous concentrer sur la lisibilité de vos structures existantes, vous devriez vous concentrer sur la création de structures plus logiques. Créez des blocs plus petits, essayez de ne pas trop imbriquer les blocs, faites de plus petites fonctions et essayez de mieux réfléchir à votre flux de code.

Si vous arrivez à un point où vous ne pouvez pas déterminer rapidement la structure de votre code, vous devriez probablement envisager refactoring et en ajoutant quelques commentaires. Le flux de code doit toujours être immédiatement apparent - plus vous devez y penser, moins votre code devient maintenable.

+0

J'ai découvert que mon code Python est beaucoup plus plat que mon code C++. Je ne sais pas pourquoi. –

-1

je regarderais pour comprendre plus de détails sur la syntaxe Python. Souvent, si un morceau de code a l'air bizarre, il est généralement préférable de l'écrire. Par exemple, dans l'exemple ci-dessus:

bar = foo if baz else None 
while bar not biz: 
    bar = i_am_going_to_find_you_biz_i_swear_on_my_life() 

did_i_not_warn_you_biz() 
my_father_is_avenged() 

Bien qu'il soit un petit changement, il peut faciliter la lisibilité. Aussi, en toute honnêteté, je n'ai jamais utilisé une boucle while, donc il y a un bon changement que vous obtiendriez avec une bonne compréhension de la liste concise ou pour la boucle à la place.;)

0
from __future__ import braces 

Dois-je en dire plus? :)

Sérieusement, PEP 8, 'Lignes vides', §4 est la façon officielle de le faire.

Questions connexes