2013-11-04 67 views
1

虽然我在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)是迁移IF直接subprocessA:

if(!some-condition){ 
    return // do nothing 
} 

但同样它看起来像耦合的代码,也是我有一种感觉,这不是最好的办法。

D)别的?

谢谢!

伊万

+0

我想说这取决于你正在使用的具体代码。对于JavaScript来说更是如此,因为您可以通过许多不同的方式完成相同的任务。我知道这是一个非常通用的答案。但是,您的描述有点像门面模式。 –

回答

0

这一切都归结到这种地步,它很重要,你如何频繁调用subFunctionN(),用于执行该子任务。现在如果你有一个线性依赖关系,你需要在另一个子函数之前调用一个子函数,并且如果这种耦合在你的代码中更占主导地位,那么这个耦合应该成为一个独立的子函数的一部分,不只是一个子任务。

为e.g

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

虽然这仅仅是如何模块化你的代码不重复自己为例,为您的代码的实际执行情况将完全根据您的模块化的喜好。这里遵循的基本原则是,您不要在多个函数中重复实际的业务逻辑,但是在您的代码中,封装函数可以重复任意次数,因为您可以将重复保持为最小值。