2

我在 c# 中有一个 switch case 语句,这里所有的情况都是我作为私有常量制作的,这里有什么不好的编程习惯,还是我需要在这里使用枚举和在 case 块中使用枚举器。我在这里只显示了三个常量,我有十个常数和十个案例块

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;
         .
         .
         .
4

5 回答 5

5

除了可怕的格式,它看起来大致还可以。当然,如果不真正了解您的代码,这有点难以判断。不过,Darin 是正确的,因为您没有遵守默认的命名约定(在 C# 中的任何地方都不允许使用大写字母)。

但我见过更糟糕的情况,如果这是任何安慰的话。

于 2012-07-13T09:28:01.547 回答
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());
于 2012-07-13T09:29:26.693 回答
3

请尝试使用花括号来确定案例的范围,这只是个人风格,但在代码行增长时会有所帮助,并且始终使用默认值:too

case FEASIBLESIZE:
{
  Level.Add(TEAMSIZE, test.ToString());
  break;
}
default:
///...
break;
于 2012-07-13T09:29:18.783 回答
1

糟糕的编程习惯:

private const String FEASIBLESIZE = "Total FEASIBLESIZE";

良好的编程习惯:

private const String FEASIBLE_SIZE = "Total FEASIBLESIZE";

更好的编程实践:

private const String FeasibleSize = "Total FEASIBLESIZE";
于 2012-07-13T09:40:24.350 回答
1

您的常量似乎是 Enum 的候选者,我会选择 Enum 而不是 const ......

于 2012-07-13T09:45:58.940 回答