Frage

Ich spiele um mit einem einfachen Anschluss des Protovis API zu Python.

Betrachten Sie das einfache Balkendiagramm Beispiel in 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();

Ich bin darüber debattieren, ob diese Fluent Interface Stil-API zu verwenden, um fortzufahren oder stattdessen benannte Parameter verwenden. Mit dem Namen Parameter könnten wir schreiben:

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()

Gibt es einen bevorzugten Python-Stil?

War es hilfreich?

Lösung

Meine Stimme ist anti-Chaining, Pro-named-params.

  1. dot-Chaining Marken für schlechte Code-Intellisense, da die empirische Prototyp nur ein leeres Panel () oder Bar (), können Sie natürlich pydoc drauf, aber in der heutigen Zeit Intellisense ist in den meisten IDEs und eine große Produktivität Booster.

  2. Chaining macht Aufruf programmatisch die Klasse viel schwieriger. Es ist sehr schön in einer Liste oder dict als * args passieren zu können, ** kwargs - während möglich mit Chaining Sie im Grunde beiden Methoden unterstützen müßten oder ein Bündel von Backflip zu Meta-erstellen die Klasse

  3. Chaining macht Code schwieriger zu lesen, weil unweigerlich jemand sie alle auf einer Linie tun, und Wunder, warum die Dinge sind alle gepatzt, wenn sie in der gleichen param zweimal passiert haben - Sie können das verhindern, aber mit ein benannter param Konstruktor dup Filterung ist grundsätzlich eingebaut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top