web-dev-qa-db-ja.com

一連のステップを実行するためのフォールスルースイッチ

私のプログラムは、最初から最後まで一連のステップを実行する必要があります。ただし、異なる入力に基づいて開始点は異なります。たとえば、最初のステップから最後まで実行されるもの、2番目のステップから最後まで実行されるもの、3番目から最後まで実行されるものなどがあります。

シンプルなデザインが必要ですが、現在は次のようなフォールスルースイッチを使用しています。

switch (step) {
case 1:
     //do the 1st step
     //fall through, so no break here
case 2:
    //do the 2nd step
    //fall through
case 3:
    //do the 3rd step
    //fall through
...
}

それは機能しますが、フォールスルーコードは常に私を不快にします。それを行うためのより良い簡単な方法はありますか?

8
Qiulang

使用している言語に応じて、関数の配列を作成し、stepをループの開始点として使用できます。何かのようなもの:

var functions = function[]
{
    step1,
    step2,
    step3,
    …
}

foreach (var index = step-1; index <= function.count; index++)
{
    functions[index]();
}
4
David Arno

あなたがそれをしている方法は完全に良くてシンプルです。そもそもフォールスルーの目的です。それがあなたをより快適にさせるなら、あなたが何をしているのかを説明するコメントを追加することができます(誰かがそのようになっている理由を理解するのに30分もかからないようにするため)。

4
Min4Builder