在清洁代码(第3章,每个功能的一个抽象级别)中,有一些关于 Stepdown Rule (接下来是高级别和低级别的高级别功能)的内容。
我使用coffeescript时应该怎么做,因为coffeescript中没有函数声明。
的示例:
seeAMovie = ()->
BuyTheTicket()
watch()
BuyTheTicket = ()->
//some thing
watch = () ->
//some thing
我想这样做。
答案 0 :(得分:8)
CoffeeScript并不会真正影响此规则。该规则与声明没有任何关系,但即使这样做,CoffeeScript 确实仍然有声明。正如@muistooshort所说,这是一个CoffeeScript函数声明:
functionName = (arg1, arg2) ->
functionBodyLine1
functionBodyLine2
如果没有参数,那么这些括号在声明中是可选的。以下是CoffeeScript中的降压规则示例:
highLevel = ->
doSomethingAlmostAsHighLevel1()
doSomethingAlmostAsHighLevel2()
doSomethingAlmostAsHighLevel1 = ->
doSomethingALittleLowerLevel1()
...
关于你的编辑的注意事项:这完全没问题,遵循降压规则。您的样品有什么问题?
书中没有提到,但鲍勃叔叔向我澄清说,当两个函数 - 在同一抽象层次 - 使用相同的低级函数时,它们应该这样订购:
highLevel1 = -> lowLevel()
highLevel2 = -> lowLevel()
lowLevel = -> ...