2012-07-13 70 views
2

我在c#中有一個switch case語句,這裏是我作爲私有常量創建的所有情況,這裏是否存在任何不良編程實踐,或者是否需要在這裏使用枚舉,以及是否需要在case塊中使用枚舉器。僅顯示三個常量在這裏,我有十個常量和十個case塊如何正確使用C#中的開關盒模塊?

private const String FEASIBLESIZE = "Total FEASIBLESIZE"; 
private const String AVAILABLESIZE = "Total AVAILABLESIZE"; 
private const String EXCESSSIZE = "Total EXCESSSIZE"; 
          . 
          . 
switch (value.ToString()) 
{ 
    case FEASIBLESIZE: 
     Level.Add(TEAMSIZE, test.ToString()); 
     break; 

    case AVAILABLESIZE: 
     Level.Add(BROADSIZE, test.ToString());         
     break; 

    case EXCESSSIZE: 
     Level.Add(NARROWSIZE, test.ToString()); 
     break; 
     . 
     . 
     . 
+5

ALLCAPS使你的C#代碼看起來像70年代初使用COBOL編寫的東西。 – 2012-07-13 09:26:33

+1

有東西在這裏聞起來。爲什麼你將Value轉換爲字符串? – Steve 2012-07-13 09:29:42

+1

大寫常常用於c#中的常量,就是這種情況。 – 2012-07-13 09:29:48

回答

1

你常數似乎是枚舉的候選人,我會去枚舉,而不是常量這裏....

+0

好嗎它有任何性能影響?我想你能解釋一下原因嗎? – vettori 2012-07-13 09:52:50

+0

基於你的常量值看起來像他們都描述大小,所以他們是一個羣體,以便更好地將它們分組在一個枚舉中。我想在開關櫃中的Enum比較應該更快。 – 2012-07-13 10:02:12

+0

@vettori不Oded的解決方案打動你?如果我的邏輯允許,我會去爲他的建議...你仍然可以去爲Enum Dictionary 變成Dictionary 2012-07-13 10:06:03

5

除了可怕的格式,它看起來大致沒問題。當然,如果你不知道你的代碼,這有點難以分辨。達林是正確的,因爲你不遵守默認的命名約定(所有的大寫字母都是C#中的任何地方)。

但是我看到更糟的是,如果這是任何安慰。

+1

+1對'我看到了更糟,如果這是任何安慰':-) – 2012-07-13 09:29:15

3

請儘量範圍與大括號的情況下,這只是個人風格,但是當行代碼長大了也總是使用默認的幫助:太

case FEASIBLESIZE: 
{ 
    Level.Add(TEAMSIZE, test.ToString()); 
    break; 
} 
default: 
///... 
break; 
4

你在做什麼模樣的東西,可以可以使用從一種尺寸類型到另一種尺寸類型的Dictionary<string,string>映射進行替換。

var sizeMap = new Dictionary<string,string>(); 

sizeMap.Add(FEASIBLESIZE, TEAMSIZE); 
sizeMap.Add(AVAILABLESIZE, BROADSIZE); 
sizeMap.Add(EXCESSSIZE, NARROWSIZE); 

代替作爲開關:

Level.Add(sizeMap[value.ToString()], test.ToString()); 
1

不好的編程習慣:

private const String FEASIBLESIZE = "Total FEASIBLESIZE"; 

良好的編程習慣:

private const String FEASIBLE_SIZE = "Total FEASIBLESIZE"; 

良好的編程習慣:

private const String FeasibleSize = "Total FEASIBLESIZE"; 
+0

FEASIBLE_SIZE是FEASIBLESIZE的一個明顯改進,但AFAIK推薦的風格爲c#是可用大小。 http://stackoverflow.com/questions/242534/c-sharp-naming-convention-for-constants。 – AlanT 2012-07-13 09:47:38

+0

@AlanT:AFAIK'FeasibleSize'用於變量,'FEASIBLE_SIZE'用於常量。 – atiyar 2012-07-13 09:50:52

+0

@AlanT:感謝您的鏈接 – atiyar 2012-07-13 10:00:52