2

私はc#でswitch caseステートメントを持っています。ここでは、私がプライベート定数として作成したすべてのケースがあります。ここで悪いプログラミング慣行が行われていますか、またはここで列挙型を使用し、ケースブロックで列挙子を使用する必要がありますか.私がここに示した3つの定数のみ、私は10個の定数と10個のケースブロックを持っています

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

中括弧を使用してケースのスコープを設定してください。これは単なる個別のスタイルですが、コード行が大きくなり、常にデフォルトを使用する場合に役立ちます:

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

あなたの定数は Enum の候補のようです。ここでは const ではなく Enum を使用します....

于 2012-07-13T09:45:58.940 に答える
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 に答える