0

我有一些与语言无关和设计模式相关的问题,尽管我在 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) 别的东西?

4

1 回答 1

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...
}

尽管这只是一个示例,说明如何模块化您的代码以免重复自己,但您的代码的实际实现将完全基于您对模块化的喜好。这里要遵循的基本准则是,您不要在多个函数中重复实际业务逻辑,但封装函数可以在整个代码中重复任意次数,前提是您可以将重复保持在最低限度。

于 2014-02-27T07:08:53.513 回答