2012-08-01 46 views
1

我在C#.NET中編寫了一段糟糕的代碼,我想優化它。開關櫃中的代碼優化.NET

我現在所能想到的是將共同部分分離成單獨的方法。

代碼:

if(condition1) 
{  
    switch(condition) 
     case 'A' : //Some code 
     break; 
     case 'B' : //Some code 
     break; 
     case 'C' : //Some code 
     break; 
} 

else if(condition2) 
{  
    switch(condition) 
     case 'a' : //Some code 
     break; 
     case 'B' : //Some code 
     break; 
     case 'C' : //Some code 
     break; 
} 

注意,對於殼體 'B' 和殼體 'C' 的情況下陳述的條件是常見的。

任何有關改進代碼的幫助深表謝意。

+2

也許合併'switch'語句,並把'if' /'else'放在適當的分支內? – Jon 2012-08-01 08:47:33

+2

你能提供更多的上下文嗎?您可能能夠根據上下文完全刪除switch語句。 – 2012-08-01 08:54:08

+1

將代碼移動到一個小的私有方法中是完全可以接受的,並且可以使代碼變爲DRY。如果可能的話,抖動會將其重新移回,通過內聯它使您不會失去速度。 – 2012-08-01 09:00:04

回答

1
case "a": 
case "A": 
    if (condition1) { 
     ... 
    } 
    else if { condition2} 
     ... 
    } 
    break; 
1

您只需將通用代碼放在一起並檢查附加條件。

switch(condition) 
{ 
    case 'A': 
    if(condition1) //do something 
    else //do something 
    break; 

    case 'a': 
    same as above 

    case 'B': 
    break; 

    case 'C': 
    break; 
} 
2

你爲什麼不疊加的情況下,如果語句如果你優化這段代碼的代碼塊應該做同樣的代碼

像這樣

case 'B' : 
case 'C' : 
{ 
//Do Some Code 
} 
break; 
1

我想即使,它仍然非常脆弱,難以維護。我會建議嘗試使用策略模式重構它(例如,如果可能的話)。

您會受益匪淺,因爲您隔離每個例程並執行OOP方式,使其更容易在將來進行更改和維護。