5

N 個のステップを持つアルゴリズムを通過するコンソール アプリケーションを作成しています。ステップが実行されるN前に、ステップが正しく行われていることが重要です。N+1そうしないと、プログラムはエラー メッセージとともに動作を停止するはずです。

もちろん、ネストされたifステートメントでこれを実行して使用できますtry-catch-finally(最後に継続フラグを使用して、プログラムが処理する必要があるかどうかを決定します)。しかし、これを行うためのより良い構造化された設計パターンまたはアプローチを探しています。推奨事項はありますか?

4

6 に答える 6

9

パイプライン設計パターンはまさにこれに関するものです。厳密な一連のステップで複雑なプロセスを実行します。Google の「パイプライン デザイン パターン」を参照すると、多くのリソースが見つかります。

これは MSDN のプログラミング指向の入門記事でありより理論的な投稿です。

于 2013-10-31T14:42:51.077 に答える
3

自動化を制御するプロセスを作成したことがあり、すべてのステップで列挙を使用しました

enum AutomationStep{Requested, Started, Waiting, Processing, Terminating};

後で、すべてのステップを異なる方法で処理するスイッチ/ケースを作成しました

switch (currentStep)
{
  case AutomationStep.Requested : InitializeProcess(); currentstep = AutomationStep.Started; break;
  case AutomationStep.Started : StartTheEngines(); currentstep = AutomationStep.Waiting; break;
  case AutomationStep.Waiting : //etc
   break;
   default:
}

後でWhileを使用してすべてのステップを実行できます

于 2013-10-31T14:48:52.483 に答える
0

私が気に入っているパターンの 1 つは、あるステップから次のステップに進むときにオブジェクトの状態を更新して、プロセスのどこにあるかを示すことです。

1 つのオブジェクトを最初から最後まで処理するのではなく、アルゴリズムの各ステップで特定の状態にあるすべてのオブジェクトを選択し、それらを処理して、次のステップに備えて状態を更新します。

プロセスの各ステップをトランザクションにすることで、オブジェクトが次のステップに完全に進むか、以前の状態にロールバックされて、このステップを再び実行できるようになります。

そうすれば、プログラムが途中で中断された場合でも、プログラムを再開することができ、すべてのオブジェクトはプロセスの途中で中断したところから再開できます。

于 2013-10-31T14:37:00.693 に答える
0

間違ったステップに当たったときは、再帰を使用して戻るか停止する

public void Process(int n)
{
 if( n % 23 != 0 )return;
 Process(n+1);
}

n作業データ セットまたは現在のセット アイテムはどこになりますか。そのために使用するデータ構造を決定するのはあなた次第です。また、23 のモジュラス チェックは、再帰チェックを中断するタイミングを示すためのものです。

于 2013-10-31T14:37:24.150 に答える