真理値表を実装するための適切な一般的なパターンはありますか?
私はいくつかのレガシー コード (C++) を作り直していますが、使用している関数が 3 つのバイナリ入力と 8 つの可能な出力を持つ真理値表になることに気付きました。8 つのテストのうちの 2 つと対応する出力の例を次に示します。
// - + +
if ( (prevdst5 < 0.0) && (dst5 > 0.0) && (nextdst5 > 0.0) ){
thawpct = (dst5 / (dst5 - prevdst5));
}
// - - +
if ( (prevdst5 < 0.0) && (dst5 < 0.0) && (nextdst5 > 0.0) ){
thawpct = (nextdst5 / (nextdst5 - dst5));
}
// other cases...
return thawpct;
基本的に、これを設定するための、よりクリーンで保守/拡張可能な*方法があるかどうか疑問に思っています。
- 別の入力が追加された場合はどうなりますか? その場合、必要な if ステートメントの数は 16 になり、私の見解では、現在のパターンで管理するには面倒すぎます。
- 複数の入力コンボを同じ出力にマップする必要がある場合はどうなりますか?
*コードベースはアカデミアで使用されるエコシステム モデルであるため、コード作成者の視点に応じて、メンテナンスと拡張は似たようなものになります。