2011-11-22 33 views
3

这些替代方案是CoffeeScript中基于类的编程的最佳风格吗?哪种风格最适合CoffeeScript中的基于类的编程?

# Alternative 1 
class Person 
    constructor: (@name, @age) -> 

new Person "Peter", 19 

# Alternative 2 
class Person 
    name: "" 
    age: 0 
    constructor: (@name, @age) -> 

new Person "Peter", 19 

# Alternative 3 
class Person 
    constructor: (@name = "", @age = 0) -> 

new Person "Peter", 19 


# Alternative 4 
class Person 
    constructor: (name, age) -> 
    @name = name ? "" 
    @age = age ? 0 

new Person "Peter", 19 
+0

什么是你的“最佳”的标准? – Phrogz

+0

这个问题应该转移到http://codereview.stackexchange.com/ –

+0

@TrevorBurnham:不知道那个。看起来很整洁! – ajsie

回答

3

嗯。 #1很好,很简单。 #3简要地显示了参数的预期格式(尽管默认值实际上并不合理 - 除非您预期某个人被命名为""或成为0岁)。

我真的建议使用散列来代替:

class Person 
    constructor: ({@name, @age}) -> 

new Person(name: "Peter", age: 19) 

这使你不必记住的参数的顺序,使您的实例调用更多的自我记录。

(我用一些例子这种方法在CoffeeScript: Accelerated JavaScript Development

+0

整洁。当我想指定默认值时,这也工作吗? – Thilo

+0

或更一般:我可以指定解构赋值的默认值吗? – Thilo

+1

不,您不能设置内联默认值。我建议在[Underscore.js](http://documentcloud.github.com/underscore/)上使用'defaults'方法在构造函数中填写对象的默认值。 –

0

第一种方法比较清楚。我总是使用这种方法。

1

#1是好的,但不确定默认值。

#2和#3是等价的,如果类不大,我会使用#3。

我认为#4是不必要的复杂。

相关问题