我有以下代码段
function func1(){
return makeReadbleStream1()
.pipe(transformA)
.pipe(transformB)
.pipe(transformC)
.pipe(X);
}
function func2(){
return makeReadbleStream2()
.pipe(transformA)
.pipe(transformB)
.pipe(transformC)
.pipe(Y);
}
函数1和2共享通过变换A,B和C的通用逻辑。基于DRY的原理,我认为最好将逻辑提取到函数combinedTransformABC中。但是,在我看来,没有明显的方法来实现基于transformA,B和C的这个函数,这样我就可以重构代码,如下所示。
function func1(){
return makeReadbleStream1()
.pipe(combinedTranformABC)
.pipe(X);
}
function func2(){
return makeReadbleStream2()
.pipe(combinedTranformABC)
.pipe(Y);
}
有什么想法吗?
答案 0 :(得分:1)
为什么不这样做:
function applyTransforms(stream){
return stream.pipe(transformA)
.pipe(transformB)
.pipe(transformC);
}
function func1(){
return applyTransforms(makeReadbleStream1()).pipe(X);
}
function func2(){
return applyTransforms(makeReadbleStream2()).pipe(Y);
}