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


9

私のプログラムは、最初から最後まで一連のステップを実行する必要があります。ただし、異なる入力に基づいて開始点は異なります。たとえば、最初のステップから最後まで実行されるもの、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
...
}

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


1
あなたはクロスポストすべきではありません。あなたの質問はこのウェブサイトで理にかなっていると思います。私があなただったら、Stack Overflowで質問を削除します。
Vincent Savard、

1
OK私はそれをSOで削除し、質問もここで更新します。ありがとう。
Qiulang 2018年

各ステップに必要なデータは同じですか?各ステップを同じ引数と戻り値の型を持つ独自の関数に抽出できますか?
Greg Burghardt

いいえ、それがアレイのソリューションが私のケースに適用されない理由です
Qiulang

回答:


4

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

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

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

ありがとう、私は現在JavaScriptを使用していますが、あなたの解決策はc / c ++にも適用できると思います。ありがとう!
Qiulang 2018年

これは、各関数の入力と出力が同じである限り、理想的なソリューションです。
Greg Burghardt

4

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.