2008-09-09 9 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のスペースを使用する4列のインデント)、またはモノスペースのフォントでは読んでいません。空白を何かのように見せる前に、どちらかを修正する必要があります。 – bignose

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++コードよりもかなりフラットであることがわかりました。理由を知らない。 –

-1

私は、Python構文の詳細について理解しています。コードが奇妙に見える場合は、通常、それを書き込む方が良いでしょう。たとえば、上記の例では、

小規模な変更ですが、読みやすくするために役立ちます。また、すべての正直なところ、私はwhileループを使ったことはありません。だから、良い簡潔なリストの理解やループの代わりに良い変化があります。;)

0
from __future__ import braces 

もっと話が必要ですか? :)

真に、PEP 8、「空白行」、§4がそれを行う公式の方法です。

関連する問題