2013-11-04 66 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... 
} 

雖然這僅僅是如何模塊化你的代碼不重複自己爲例,爲您的代碼的實際執行情況將完全根據您的模塊化的喜好。這裏遵循的基本原則是,您不要在多個函數中重複實際的業務邏輯,但是在您的代碼中,封裝函數可以重複任意次數,因爲您可以將重複保持爲最小值。