我在一个项目中发现了一些(stuipd)重复的 If-Else 代码。现在我正在寻找缩短和更改代码的想法。问题是,不允许使用数据库或其他东西。值必须在代码中。有人想缩短以下代码吗?我的想法是使用地图,但我不确定这是否可行。
if ( a_lFittingOption == FitO_P_BASIC_TT)
{
if ( dLengthComp > 2000.0 )
dValue = 1130.0;
else if ( dLengthComp > 1800.0 )
dValue = 930.0;
else if ( dLengthComp > 1450.0 )
dValue = 780.0;
else if ( dLengthComp > 870.0 || Null( dLengthComp - 870.0 ))
dValue = 455.0;
}
else if ( a_lFittingOption == FitO_P_BASIC_TT_RC2 || a_lFittingOption == FitO_P_BASIC_TT_RC1) // 170 mm RC1/RC2
{
if ( dLengthComp > 1450.0 )
dValue = 850.0;
else
dValue = 455.0;
}
else if ( a_lFittingOption == FitO_P_BASIC_TT_250mm_S)// 170 mm ( S+ Auswahl 250 ) Basic Simply Smart
{
if ( dLengthComp > 2000.0 )
dValue = 1130.0;
else if ( dLengthComp > 1800.0 )
dValue = 930.0;
else if ( dLengthComp > 1450.0 )
dValue = 800.0;
else if ( dLengthComp > 930.0 || Null( dLengthComp - 930.0 ))
dValue = 485.0;
}
else if ( a_lFittingOption == FitO_P_BASIC_TT_250mm_S_RC2 || a_lFittingOption == FitO_P_TT_250mm_S_RC1) // 170 mm ( S+ Auswahl 250 ) RC2 Simply Smart
{
if ( dLengthComp > 2000.0 )
dValue = 1130.0;
else if ( dLengthComp > 1800.0 )
dValue = 930.0;
else if ( dLengthComp > 1450.0 )
dValue = 901.0;
else if ( dLengthComp < 1450.0 || Null( dLengthComp - 1450.0 ))
dValue = 485.0;
}
return dValue;
谢谢,对于任何信息和/或想法。我不想有一个完整的代码,只是想解决问题。
像这样的东西将能够清理你的代码:
#include <iostream>
#include <map>
#include <functional>
double basic_tt(const double dLengthComp)
{
double dValue{};
if (dLengthComp > 2000.0)
dValue = 1130.0;
else if (dLengthComp > 1800.0)
dValue = 930.0;
else if (dLengthComp > 1450.0)
dValue = 780.0;
else if (dLengthComp > 870.0) // || Null(dLengthComp - 870.0))
dValue = 455.0;
return dValue;
}
const long FitO_P_BASIC_TT = 1;
int main()
{
std::map<long, std::function<double(const double)>> selected_function
{
{ FitO_P_BASIC_TT, basic_tt} // extend map here for each strategy
};
auto dValue = selected_function[FitO_P_BASIC_TT](3.1);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句