雖然與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