2008-09-09 3 views
2

В последнее время мне очень нравится программирование на Python. Я прихожу на фоне сильной любви к кодированию на основе C, где все, возможно, сложнее, чем должно быть (но, по крайней мере, накладывает волосы на грудь). Поэтому переход от C к Python для более сложных вещей, которые не требуют тонны скорости, был скорее благом, чем проклятием в написании проектов.Улучшение читаемости на Python?

Однако, исходя из этой земли скобок и скобок и структур, насколько невооруженным глазом видно, я сталкиваюсь с небольшой проблемой: я считаю, что Python трудно читать.

Например, следующий блок текста трудно для меня, чтобы расшифровать, если я не смотрю на него (что я не люблю делать):

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() 

Проблема возникает в конце, что если блок: все табуляция, а затем внезапное возвращение в блокирующий блок кажется почти тревожным. В качестве решения, я начал программировать свой Python так:

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() 

И это, по какой-то причине, делает меня более в состоянии прочитать мой собственный код. Но мне любопытно: кто-нибудь еще с моей странной проблемой нашел более простые способы сделать их код с вкладками более удобочитаемым? Мне бы хотелось узнать, есть ли лучший способ сделать это, прежде чем это станет для меня огромной привычкой.

ответ

23

Часть изучения нового языка программирования учит читать код на этом языке. Такой костыль может облегчить чтение вашего собственного кода, но он будет препятствовать процессу обучения чтению чужого кода Python. Я действительно думаю, что вам лучше избавиться от конца комментариев блоков и привыкнуть к обычным Python.

8

Вы можете попробовать увеличить размер отступа, но в целом я бы просто сказал, расслабьтесь, он придет со временем. Я не думаю, что пытаюсь сделать Python похожим на C, это очень хорошая идея.

3

Возможно, лучше всего включить «show whitespace» в ваш редактор. Тогда у вас будет визуальный индикатор того, как далеко в каждой строке отображается вкладка (обычно это куча точек), и это будет более очевидно, когда это изменится.

+0

Если отступ не является очевидным из самого пробела, то либо его недостаточно (четырехпозиционные отступы с использованием пробелов только для PEP 8), либо вы не читаете его в моноширинном шрифте. Любой из них должен быть исправлен, прежде чем принимать решение о том, чтобы пробелы выглядели как что-то еще. – bignose 2009-05-03 14:02:53

15

Мне нравится ставить пустые строки вокруг блоков, чтобы сделать поток управления более очевидным. Например:

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

Вместо того, чтобы сосредоточиться на том, чтобы сделать ваши существующие структуры более читаемыми, вы должны сосредоточиться на создании более логичных структур. Создавайте меньшие блоки, старайтесь не чрезмерно блокировать блоки, выполнять меньшие функции и больше пытаться продумать свой поток кода.

Если вы дошли до того, что не можете быстро определить структуру своего кода, вам, вероятно, следует рассмотреть возможность реорганизации и добавления комментариев. Поток кода всегда должен быть незамедлительным - чем больше вы должны думать об этом, тем менее удобным для вас становится ваш код.

+0

Я обнаружил, что мой код на Python намного более плоский, чем мой код на C++. Не знаю, почему. – 2010-06-16 16:02:27

-1

Я хотел бы изучить более подробные сведения о синтаксисе Python. Часто, если фрагмент кода выглядит странно, обычно есть лучший способ его написать. Например, в приведенном выше примере:

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() 

Хотя это небольшое изменение, оно может помочь в удобочитаемости. Кроме того, честно говоря, я никогда не использовал цикл while, поэтому есть хорошие изменения, в результате чего вы получите приятное сжатое понимание списка или вместо цикла.;)

0
from __future__ import braces 

Нужно ли говорить больше?)

Серьезно, PEP 8, «Пустые линии», §4 является официальным способом его выполнения.

Смежные вопросы