2012-11-21 10 views
14

私はPEP 8で指定されたスタイルスタンダードに従ってください。私はそれを自動的にチェックするリンターを持っています。Pythonアサインメントのアラインメント(スタイル)

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でDIS-推奨されているスペースがコロンの後に許可されているので、それほど悪くはありません:

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

私は「アライメントせずに変数の代入と「ライブ」することができますが、私はドンまったくのようなtがこのように、関数呼び出しで名前付き引数を渡すことができるようにではありません。

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) 

をまたはただのsi mply

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

ベストプラクティスは何ですか?多くの年後

EDITは合わせないでください。遅かれ早かれ新しい変数が来て、すべてが再び良く見えるまであなたはここでスペースバーに当たってしまいます。それだけの価値はありません。

+11

ベストプラクティスは、PEP 8を実行することです。代入演算子と辞書値を揃えないようにしてください。あなたの謙虚な意見は、毎日それを受けることになると簡単に変わるかもしれません。 – delnan

+0

Javascriptで引数を引数に渡すことさえできますか?では、なぜこの恐ろしいことをしますか? – jadkik94

+0

JSでは、15個の順序付き引数の代わりにspecificationオブジェクトを渡すことをお勧めします。 Douglas Crockford dixit、私は全く同意します。 – bgusach

答えて

13

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

名前付き引数を使用して関数を呼び出すたびに、辞書を作成することは間違いありません。それはかなり無駄です。あなたの元のsome_func呼び出しがうまくいかない理由はわかりません。私は関数呼び出しが長すぎて扱いにくい場合、関数呼び出しを行に間違いなく壊します。しかし、私はそれらを整列させていません。私は推薦の理由は時間の経過とともにすべての間隔を正しく維持するのに巨大な痛みを感じることができ、コンセンサスはかわいそうの利益よりも保守性が高いからだと思います。

自分のコードで作業している場合は、整列して、誰が気にしますか? PEP8は法律ではなく、ガイドラインです。

+1

あなたは正しいですが、幸いにも私のIDEは特殊文字 ":"、 "="などに基づいて自動的に整列します。私のために、メンテナンスは速くて快適なものでもあります。 – bgusach

+0

それでは、IDEの設定を変更するか、整列を維持してください。私に勝つように思えます:) – acjay

+0

ベスト答え。私が単独でコードを書いている限り、(主観的に)読みやすさを高めるように標準を少し変更します:) – bgusach

2

だから、私は何をやってしまうことは、以下のように、辞書を使用している:

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

IMHO - これは(それが鍵を引用せずに有効な構文た)読みにくくなり、Iの場合some_longer_named_varibleを追加したいと思っている場合は、他のすべてのものの間隔を変更したいと思うかどうかは分かりません。

あなたは私が恐れている弾丸を噛むべきだと思います。

+0

私はちょうどキー値のタイプミスを修正しました。 var名が非常に長いと、整列によって混乱することがあります。まれなケースでは、私はちょうど最後の位置に長い名前を宣言しています。しかし、私にとっては、ほとんどの場合、読みやすさが向上しています。目はどこを見るかを知っています。 – bgusach

+0

私は長さが合理的に近い割り当てを並べることが大好きですが、1人の長い男を収容するために醜いスペースを気にしません。ほとんど並んで、混乱した混乱よりも優れています。数時間のうちにここ数時間は、自己満足と美しいコードの価格ですが、それは私が支払う以上の価格です。 –

1

私はPEP8に固執することをお勧めします。変数の名前を変更する必要がある場合はどうなりますか?あなた自身揃えものを維持するためのより多くの仕事をする羽目になる

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

:これまで

var1  = 1234 
var2  = 54 
longer_name = 'hi' 

:自動化されたリファクタリングツールは、これを変更します。

+1

私がコードを書くのに使うエディタは、簡単なキーストロークでコードを自動的に整列します。だから、大したことではない。唯一の問題は変数が長すぎることですが、そのような場合は、その割り当てを整列させず、可能であれば最後の位置に配置します。 – bgusach

+0

@ ikaros45:結論は個人的な選択だということです。あなたがコードを読んでいる唯一の人なら、あなたが一番好きなことをして、PEP8のようなスタイルガイドに縛られすぎないようにしてください。逆に、コードをチームの一員として記述している場合は、チームが合意したスタイルガイドに固執することが重要です。したがって、コードを読まなければならないすべての人を怒らせることはありません。 –

+0

私の意見が必要な場合は、PEP8が推奨するように、非整列のスタイルが好まれます。私は目が空白の隙間の一方の側から他方の側へと迷子になる傾向があることを知る。章のタイトルがページ番号から分離されている本の内容ページを読むときのように。 –

関連する問題