在这些替代方案中,这是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 :(得分:3)
嗯。 #1很简单。 #3简洁地显示了参数的预期格式(虽然默认值实际上没有意义 - 除非您期望某个人被命名为""
,或者0
岁。< / p>
我真正推荐的是使用哈希代替:
class Person
constructor: ({@name, @age}) ->
new Person(name: "Peter", age: 19)
这使您不必记住参数的顺序,并使您的实例化调用更加自我记录。
(我在 CoffeeScript: Accelerated JavaScript Development 中的一些示例中使用此方法。)
答案 1 :(得分:1)
#1没问题,但不确定默认值。
#2和#3是等价的,如果班级不大,我会使用#3。
我认为#4不必要地复杂。
答案 2 :(得分:0)
第一种方式更清楚。我总是使用这种方法。