2016-03-24 11 views
0

まず、コードを簡単に説明します。フェイル・ファスト・デザイン・パターン

IDのリストを持つ構成ファイルが存在します。 forループでは、これらのIDは一度に1つずつ読み込まれ、JSON構造のリストが作成されます。例外なくすべてがうまくいく場合(例えば、データ全体が存在しない場合)、それらはデータベースにプッシュされます。

私の質問になる... IDごとに、実行中のビジネスルールがたくさんあります。私は、たとえ予想されるデータのいずれかが欠落していたり​​、ビジネスルールがいつでも失敗しても、データをDBに挿入していないというような形でコード化しました。そのIDの処理がそこで停止し、エラー・メッセージがログ・ファイルに書き込まれ、次のIDに進む。これは、私が疑問を抱くファストファストデザインパターとして定義できますか?

+3

私はむしろそうは言っていません。フェイル・ファスト・チェックは、通常、フェイル・ファスト・チェックを除去すると、システムは適切に動作しますが、遅くなる場合に備えて予約されています。アプリケーションでチェックする制約と同じ制約がデータベースにある場合、ケースは高速であると見なされる可能性があります。 – gudok

答えて

0

としてはCodeRanchで答え:多くの場合、答えは「それが依存」である場合であるhttp://www.coderanch.com/t/663709/java/java/Fail-Fast-Design-Pattern

通り。それはあなたが何を失敗と見なすかによって異なります。

空の設定ファイルは、あなたが知りたいエラー条件であるとしましょう。 「フェイル・ファスト」アプローチは、ファイルが空であることを検出した直後に例外をスローし、障害の発生時に操作を停止することです。代わりに、処理を続行し、データベースにデータを書き込まなくてもかまいません。この時点では、データベースにデータがないというバグがあります。何故ですか?データベース挿入コードが失敗しましたか?データベース自体に問題はありますか?ファイルの処理に失敗しましたか?データが壊れていますか?あなたは今、バグを見つけてエラーを追跡しており、可能性がたくさんあります。

各ビジネスルールを使用して各IDを処理します。すべてのIDが有効であるという要求であれば、無効なIDを見つけたときに処理を中止することは、「失敗高速」アプローチになります。しかし、あなたの例では、単純に無効なデータを無視し、有効なデータをデータベースに書き込むように見えます。これはまったく失敗しているわけではなく、無効なデータを無視するだけで無効なデータを処理する方法を決定しています。そうではありません、あなたはこの設計では失敗していません。

「フェイル・ファスト」の目的は、実行中の状態になることを避けるために、正確な障害の原因を挙げて、プログラムの失敗を正確な時点で中止することです。

関連する問題