notes
declare function secondSinceLastComment(userId:string):number
declare function postComment(comment:string,userId:string):void
function commentGatekeeper(comment:string,userId:string):boolean{
if((comment='')||(secondSinceLastComment(userId)<10)) //翻转条件提升性能
return false
postComment(comment,userId)
return true
}
declare function secondSinceLastComment(userId:string):number
declare function postComment(comment:string,userId:string):void
function commentGatekeeper(comment:string,userId:string):boolean{
if((comment='')||(secondSinceLastComment(userId)<10)) //翻转条件提升性能
return false
postComment(comment,userId)
return true
}
大部分编译器运行时会对布尔表达式进行所谓的‘短路’优化,a and b 形式的表达式会被翻译为if a then b else false。
a OR b 会进行类似的翻译,使其成为if a then true else b。
之所以进行类似的翻译,是因为如果计算的第一个操作符已经能够知道整个表达式的结果,则完全不必进行计算第二个操作符,即所谓‘短路’。
所以上边我们把请求数据库的判断放在第二项,从而在一些情况下减小开销以提升性能。