【发布时间】:2013-09-01 05:02:15
【问题描述】:
我有一个简单的场景,我在添加之前检查是否存在某些东西,如果存在,我 return 函数(因此退出)。我多次使用这种模式,我想将它解耦到另一个简单的函数中。
function onEvent(e){
if( this.has(e) )
return
this.add(e);
// More logic different on an event-basis
}
我想像这样解耦它:
function safeAdd(e){
if( this.has(e) )
return
this.add(e);
}
function onEvent(e){
safeAdd(e);
// More logic
}
但显然这样做只是 returns safeAdd 并没有从 onEvent 退出,其余的逻辑无论如何都会执行。
我知道我可以这样做:
function safeAdd(e){
if( this.has(e) )
return false
this.add(e);
return true
}
function onEvent(e){
if( !safeAdd(e) )
return
// More logic
}
但是,由于我重复了很多次,所以我希望尽可能简洁。
【问题讨论】:
-
这是最简洁的(除了
safeAdd函数中的一些摆弄)。 -
可以通过函数“指针”传入“更多逻辑”(不确定 javascript 是否调用它),然后在将条目添加到列表时让 safeAdd() 调用该附加函数.但是,我怀疑这是否更简洁。
标签: javascript refactoring return dry decoupling