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) その IF を subprocessA に直接移行します。

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

しかし、やはり結合されたコードのように見えます。また、それは最善のアプローチではないと感じています。

D) 他に?

4

1 に答える 1

0

つまり、そのサブタスクを実行するために subFunctionN() を呼び出す頻度が重要になるということです。別のサブ関数の直前にサブ関数を呼び出す必要がある線形依存関係があり、この結合がコード内でこの結合よりも支配的である場合、より多くの機能を実行する別のサブ関数の一部にする必要があります。 1 つのサブタスクだけではありません。

例:

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 に答える