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

我的投票是反链接,支持命名参数。

  1. 由于经验原型只是一个空的 Panel() 或 Bar(),因此点链会导致代码智能感知不佳,您当然可以在其上使用 pydoc,但在当今大多数 IDE 中都可以使用智能感知,并且极大地提高了生产力.

  2. 链接使得以编程方式调用类变得更加困难。能够将列表或字典作为 *args、**kwargs 传递是非常好的——虽然可以使用链接,但您基本上必须支持这两种方法或一堆后空翻来元创建类。

  3. 链接使代码更难阅读,因为不可避免地有人会在一行中完成所有操作,并且想知道为什么当它们两次传入相同的参数时事情都搞砸了——你可以防止这种情况,但使用命名参数构造函数 dup 过滤基本上是内置的。

于 2010-10-07T17:13:38.897 回答