これは設計上の問題であり、実装を求めているわけではありません。
パラメータの値が関連するテストに合格するかどうかが出力されるように、さまざまなタイプの複数のパラメータと (構成とは別に) それらのパラメータをテストするルールを受け取るオブジェクトを「適切に」設計するにはどうすればよいでしょうか?
「適切に」とは、可能な限り効率的で、気まぐれに構成に新しいルールを簡単に追加し、コンパイルせずにより多くのパラメーターを渡すだけであることを意味します。さらに、(私の現在の実装のように)渡されるパラメータのインデックスを知っているルール構成を必要とせず(私の現在の実装ではそうであるように)、適切に設計されたコードを生成する必要はありません。
ありがとう。
インターフェイスの基本的な例は次のようになります。
構成:
num_rules: 2
rule0:
parameter_index: 0
comparison_operator: gt
value: 12.3
rule1:
parameter_index: 1
comparison_operator: eq
value: 19
推奨オブジェクト:
class RecoObj {
public:
RecoObj(char *configFilename);
bool recommend(float testParameter[]); // Returns true if all tests pass
...
}
これは私の現在の構成であり、いくつかの問題があります。すべてのパラメーターが float である必要があり、ルールが比較対象の testParameter 配列内のインデックスを認識している必要があります (つまり、構成ライターは、プログラマーがその配列をどのようにロードしたかを認識している必要があります)。この問題に対するより良い設計上の解決策があるかのように感じます。