是否有一个很好的通用模式来实现真值表?
我正在重新处理一些遗留代码(C++),并且刚刚意识到我正在使用的函数相当于一个具有 3 个二进制输入和 8 个可能输出的真值表。这是八个测试中的两个和相应输出的示例:
// - + +
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,在我看来,这对于当前的模式来说太麻烦了。
- 如果几个输入组合应该映射到同一个输出怎么办?
*代码库是学术界使用的生态系统模型,因此根据编码人员的观点,维护和扩展是类似的事情。