我有一些语言不可知和设计模式相关的问题,虽然我在javascript / node.js编程,如果它的重要。 对于一些有经验的程序员来说,它实际上非常简单并且可能是微不足道的。
假设我们有一个函数/方法通过调用处理特定子问题的其他函数来执行某些处理(称之为业务逻辑)。
function doProcess(){
subProcessA();
subProcessB();
subProcessC();
return "OK"
}
但是,我们得到了执行类似过程的任务,但是这个新进程不能调用subProcessA。 例如,我们有下一部分代码:
function doProcess2(){
subProcessB();
subProcessC();
return "OK"
}
所以我的问题是如何设计代码或者我应该:
A)每次为新进程创建新函数,如上例所示,但是我有很多冗余代码并且每次重复自己。
B)在这样的流程代码中做大IF:
if(some-condition){
subProcessA()
}
但是我的代码看起来会很糟糕。
C)直接在subprocessA中迁移IF:
if(!some-condition){
return // do nothing
}
但它看起来像耦合代码,我也觉得这不是最好的方法。
D)还有别的吗?
谢谢!
伊万
答案 0 :(得分:0)
这一切都归结为这样一个问题,即你调用subFunctionN()执行该子任务的频率是多少。现在,如果你有一个线性依赖,你需要在另一个子函数之前调用一个子函数,并且如果这个耦合在你的代码中占主导地位,那么这个耦合应该成为一个单独的子函数的一部分,它执行更多而不只是一个子任务。
例如:
Function MasterFunctionA(){
subFunctionCouplet_12();
subFunction3();
}
Function MasterFunctionB(){
subFunction1();
subFunction3();
}
Function subFunctionCouplet_12(){
subFunction1();
subFunction2();
}
Function subFunction1(){
//do something here...
}
Function subFunction2(){
// do something here...
}
Function subFunction3(){
// do something here...
}
虽然这只是一个如何模块化代码而不重复自己的例子,但代码的实际实现完全基于您对模块化的喜好。这里要遵循的基本原则是你不要在多个函数中重复实际的业务逻辑,但是在整个代码中封装函数可以重复多次,因为你可以将重复保持在最低限度。