36

PEP 8で指定されているように、スタイル標準に従うのが本当に好きです。自動的にチェックするリンターがあります。そのため、コードは間違いなくはるかに優れています。

PEP 8には1つのポイントしかありませんが、E251とE221はあまり気分が良くありません。JavaScriptのバックグラウンドから来て、私は変数の割り当てを次のように調整していました。

var var1        = 1234;
    var2        = 54;
    longer_name = 'hi';

var lol = {
    'that'        : 65,
    'those'       : 87,
    'other_thing' : true
};

そして私の謙虚な意見では、これは読みやすさを劇的に改善します。問題は、これはPEP 8では推奨されていないことです。辞書では、コロンの後にスペースが許可されているため、それほど悪くはありません。

dictionary = {
   'something':        98,
   'some_other_thing': False
}

アラインメントなしで変数の割り当てを「生きる」ことはできますが、私がまったく気に入らないのは、次のように、関数呼び出しで名前付き引数を渡せないことです。

some_func(length=      40,
          weight=      900,
          lol=         'troll',
          useless_var= True,
          intelligence=None)

したがって、私がやることになるのは、次のように辞書を使用することです。

specs = {
    'length':       40,
    'weight':       900,
    'lol':          'troll',
    'useless_var':  True,
    'intelligence': None
}

some_func(**specs)

または単に

some_func(**{'length':       40,
             'weight':       900,
             'lol':          'troll',
             'useless_var':  True,
             'intelligence': None})

しかし、この回避策は、PEP 8 E251/E221を無視するよりも悪いと感じています。

ベストプラクティスは何ですか?

何年も後に編集

整列しないでください。遅かれ早かれ、より長い新しい変数が来て、すべてが再び良く見えるまで、しばらくの間スペースバーをあちこちで押す必要があります。それだけの価値はありません。

さらに数年後に編集 する黒のようなコードフォーマッターを使用して、プリコミットやCIとして使用します。その後、これを忘れてください。

4

3 に答える 3

18

ベスト プラクティスは主観的なものですが、最も一般的なプラクティスは PEP8 に固執することです。

名前付き引数で関数を呼び出すたびに辞書を作成することは絶対にお勧めしません。それはかなり無駄です。some_func元の呼び出しが機能しない理由がわかりません。関数呼び出しが長くなりすぎて扱いにくい場合は、間違いなく行に分割します。しかし、私はそれらを整列させません。推奨の理由は、時間の経過とともにすべての間隔を正しく維持するのが非常に困難になる可能性があるためだと思います。

独自のコードに取り組んでいる場合は、離れて調整します。誰が気にしますか? PEP8 はガイドラインであり、法律ではありません。

于 2012-11-21T16:41:51.830 に答える
2

PEP8に固執することをお勧めします。変数の 1 つの名前を変更する必要がある場合はどうなりますか? 自動リファクタリング ツールはこれを変更します。

var1        = 1234
var2        = 54
longer_name = 'hi'

これに:

var1        = 1234
var2        = 54
even_longer_name = 'hi'  # not aligned any more!

物事を調整するために、自分でより多くの作業を行うことになります。

于 2012-11-21T16:50:25.450 に答える
2

したがって、私がやっていることは、次のように辞書を使用することです。

specs = {
    length:      40,
    weight:      900,
    lol:         'troll',
    useless_var: True,
    intelligence:None
}

私見-これは読みにくいです(キーを引用せずに有効な構文some_longer_named_varibleでしたか)。

私はあなたが弾丸をかむべきだと思います。

于 2012-11-21T16:40:57.573 に答える