4

最近、Python プログラミングをとても楽しんでいます。私は、C ベースのコーディングが大好きな背景から来ています。C ベースのコーディングでは、すべてが必要以上に複雑になっている可能性があります (ただし、少なくとも胸が苦しくなります)。したがって、大量の速度を必要としないより複雑なことのために C から 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()

問題はその if ブロックの最後で発生します。すべてのタブ移動と突然耳障りなブロックに戻るのは、ほとんど邪魔に感じます。解決策として、次のように 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()

そして、これにより、何らかの奇妙な理由で、自分のコードをより読みやすくなります。しかし、私は興味があります: 私の奇妙な問題を抱えている他の誰かが、タブアウトされたコードをより読みやすくする簡単な方法を見つけましたか? これが私の大きな習慣になる前に、これを行うためのより良い方法があるかどうかを知りたい.

4

7 に答える 7

24

新しいプログラミング言語を学ぶことの一部は、その言語でコードを読むことを学ぶことです。このような松葉杖は、自分のコードを読みやすくするかもしれませんが、他の誰かの Python コードを読む方法を学ぶプロセスを妨げます。ブロックコメントの終わりをなくして、通常の Python に慣れた方がいいと思います。

于 2008-09-09T14:58:52.277 に答える
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()
于 2008-09-09T10:33:05.457 に答える
8

インデントのサイズを大きくすることもできますが、一般的にはリラックスしてください。Python を C のように見せようとするのはあまり良い考えではないと思います。

于 2008-09-09T10:08:28.183 に答える
7

既存の構造を読みやすくすることに集中するのではなく、より論理的な構造を作成することに集中する必要があります。ブロックを小さくし、ブロックを過度に入れ子にしないようにし、関数を小さくし、コード フローをよく考えてみてください。

コードの構造をすぐに判断できない場合は、おそらくリファクタリングとコメントの追加を検討する必要があります。コード フローは常にすぐにわかるようにする必要があります。考えれば考えるほど、コードの保守性が低下します。

于 2008-09-09T10:43:27.803 に答える
3

おそらく、エディターで「空白を表示」をオンにするのが最善でしょう。次に、各行のどこまでがタブ (通常はドットの集まり) であるかを視覚的に示し、それが変化するとより明確になります。

于 2008-09-09T10:24:46.787 に答える
0
from __future__ import braces

もっと言う必要がありますか?:)

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

于 2010-06-16T15:40:49.153 に答える
-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 ループを使用したことがないので、代わりに簡潔なリスト内包表記または for ループで終わる良い変更があります。;)

于 2008-09-09T15:09:04.137 に答える