虽然与NLP打我已经遇到了一点小问题:嵌套开关替代
switch(var1)
{
case Variant1_1:
if(cond1)
{
if(cond2)
{
if(cond3)
{
switch(var2)
{
case Variant2_1:
return someExpression;
// another five-six cases
default:
return;
}
}
else // cond3
{
switch(var2)
{
case Variant2_1:
return someExpression;
// another five-six cases
default:
return;
}
}
}
else // cond2
{
if(cond3)
{
switch(var2)
{
case Variant2_1:
return someExpression;
// another five-six cases
default:
return;
}
}
else // cond3
{
switch(var2)
{
case Variant2_1:
return someExpression;
// another five-six cases
default:
return;
}
}
}
}
else // cond1
{
// same thing
}
break;
case Variant1_2:
// same gigantic tree
break;
case Variant1_3:
// here too
break;
default:
return;
}
是这样的“计算树”有什么办法?唯一出现在我脑海中的是一些带有函数指针叶子和很多小函数的树形容器。
这段代码应该重构,不仅在这个函数中,而且还有其他函数。有时候,重构只有一个函数没有多大帮助,或者并不那么容易,但是考虑整个项目的设计(或者至少其他相关函数)会有很大帮助。然后,重构很容易,您可以期望更好的整体设计。 – Nawaz 2012-03-22 15:31:12
对于每个条件组合,表达式是否真的独立?在我的经验中很少见。通常情况下,可以考虑一些共同点来减少个案的尝试次数。 – 2012-03-22 15:31:33
考虑到这是NLP ..我想还会有更多的:-) – MadRunner 2012-03-22 15:55:38