23

私は、Protovis API を Python に単純に移植して遊んでいます。

Javascript での単純な棒グラフの例を考えてみましょう。

var vis = new pv.Panel()
    .width(150)
    .height(150);

vis.add(pv.Bar)
    .data([1, 1.2, 1.7, 1.5, .7, .3])
    .width(20)
    .height(function(d) d * 80)
    .bottom(0)
    .left(function() this.index * 25);

vis.render();

この流れるようなインターフェイス スタイルの API を使い続けるか、代わりに名前付きパラメーターを使用するかを検討しています。名前付きパラメーターを使用すると、次のように記述できます。

vis = pv.Panel(width=150,
               height=150)

vis = vis + pv.Bar(data=[1, 1.2],
                   width=20,
                   height=lambda d: d * 80,
                   bottom=0,
                   left=lambda: self.index * 25)
vis.render()

推奨される Python スタイルはありますか?

4

1 に答える 1

21

私の投票はアンチチェーン、pro-named-params です。

  1. 経験的なプロトタイプは空の Panel() または Bar() にすぎないため、ドットチェーンはコードのインテリセンスを低下させます。もちろん pydoc を実行できますが、この時代のインテリセンスはほとんどの IDE で利用でき、生産性を大幅に向上させます。 .

  2. 連鎖により、プログラムによるクラスの呼び出しがはるかに困難になります。リストまたは dict を *args、**kwargs として渡すことができるのは非常に便利です。チェーンを使用すると、クラスをメタ作成するために基本的に両方のメソッドまたは一連のバックフリップをサポートする必要があります。

  3. 連鎖するとコードが読みにくくなります。なぜなら、必然的に誰かがすべてを 1 行で実行し、同じパラメーターを 2 回渡したときにすべてがうまくいかないことに疑問を抱くからです。基本的に組み込まれています。

于 2010-10-07T17:13:38.897 に答える