0

私はいくつかのコードを読み込んで、数十の入力ソースで作業を行っています。現在のところ、入力はほとんどがCSVであり、いくつかの特別なフィールドがありますが、CSVファイルの完全な構造と内容は入力ソースによって異なります。各入力タイプは、入力に関する既知の問題を「修正」するために、特別な処理が必要になる場合があることが示唆されています。ただし、実行する必要があることは、どちらかといえば、各入力ソースに固有の問題によって異なります。各入力ソースに対して実行する必要のあるエラー検出の間に共通点はありません。私のコードは、最終的にはこの種のエラー修正を実行できるようにしたいと考えています。新しい問題が発生した場合は、コードで新しい問題の修正を開始できるようにする必要があります。

明らかに、これは、私に渡されるまで実行する必要のあるロジックが正確にわからないため、簡単に対処することはできません。私のマネージャー(開発者ではない)は、受け取ったロジックのそれぞれの固有の部分をハードコーディングすることを暗示していましたが、明らかに私はこのオプションが好きではありません。ただし、大量のあいまいなハードコードされたロジックを避けたい場合は、開発者が入力をテストし、既知の不良フィールドを変更/修正するためのある種の一般的な概念を定義できる、ある種の構成方法が必要です。

さらに、私のプログラムはストリーミングデータで継続的に実行されます。理想的には、コードを停止/再起動せずに、新しい形式のエラー訂正をコードに追加する方法があります。

では、コードでこのような汎用ロジックをソースごとに構成できるようにするための最良の方法は何でしょうか。頭に浮かぶオプションは、構成ファイルにある種の「言語」を含めることです。これにより、開発者は「field3> field2を破棄する場合」のように言うことができます。これは、開発が難しく、自動的には実行されないようです。時々コードを持っていない限り更新してから、戻って設定ファイルに変更がないか確認してください。または、これらのタイプのチェックを含む共有オブジェクトを使用して、開発者が対処する必要のある新しい問題を提供するたびに新しいエラーチェック機能を追加できるようにすることもできます。しかし、これはまだロジックのハードコーディングをわずかに上回っています。

このための最良の設計アプローチに関する提案はありますか?私のために仕事の一部をするかもしれない既存の図書館はありますか?私は純粋なC++(c ++ 11ではない)を使用しています。

編集:あなたの入力に感謝します、しかし私は1つの主要な詳細に言及することができませんでした。これはすべて、負荷の高いストリーミング処理中に発生します。したがって、選択する方法に実行するオーバーヘッドが大きすぎないことを確認する必要があります。スクリプト言語を組み込むことを検討しますが、「コストがかかりすぎる」のではないかと心配しています。

4

2 に答える 2

0

プログラムでこの特別な「修正」処理を混同したくないでしょう。それはおそらく厄介なコードにつながるでしょう。

固定入力を取得し、それを実際のプログラムの固定入力に変換する前処理ステップがあります。このように、実際のプログラムは1つのことを実行し、よりシンプルに保たれます。

変換を行うために、それぞれの特定の入力を処理する個別のプログラムを持つことができます。これらのプログラムは、さまざまな入力で必要になる可能性のある共通のルーチンを利用できます。

于 2012-07-10T19:31:16.993 に答える
0

私はプラグインアーキテクチャを使用することにしました。各入力は、実行時にロードされる独自のプラグインを取得します。これは高速で、コードをかなり適切にカプセル化した状態に保ち、プログラムの実行中に新しいプラグインと新しいコードのホットスワップを検出できます。

于 2012-08-07T21:22:56.237 に答える