0

こんにちは皆さん、私は本当に簡単な質問があります:

私は次のコードを持っています:

for (...) 
{ 
   if(something == null)
   {
     switch(ENUM_TYPE) 
     {
      case something:
         something == new Something();
         break;
      case other:
       continue;
      }
      some instructions that i don't want to execute when other.
    }
}

これは良いデザインですか?

4

3 に答える 3

1

switch ステートメントの基本的な考え方は、複数の選択肢から選択できるようにすることです。

あなたの例では 1 つしかないため、switch ステートメントを使用しても意味がありません。

したがって、あなたの例から、私がそれを正しく読んでいれば、次のステートメントのように、より明確で読みやすくなります。continue を使用する際の問題は、これが一種のジャンプであり、生成されるソース コードが少しわかりにくいことです。

for (...) {
  if (something1 && something != other) {
    if (something == something) {
        // do the something stuff
    }
    // do the stuff that is for everything else
  }
}

switch ステートメントには制限があり、さまざまな case の代替がどのように見えるかによって、switch ステートメントの柔軟性が低下します。

switch ステートメントに関するこの議論と、それが組み込みの型と列挙型にどのように制限されているかを参照してください。 Java Switch ステートメント

于 2013-05-01T12:02:56.053 に答える
0

いいえ、単純な理由で、「1 つのことを行う」という原則に違反しています。その代わり:

for (...) 
{ 
   if(something == null)
   {
     switch(ENUM_TYPE) 
     {
      case something://I think you have variable overloading here.
         methodForSomethingCase();
         additionalInstructions();
         break;
      case other:
         //essentially do nothing
         break;
      default:
         additionalInstructions(); 
     }
  }
}

このようにして、追加の命令がこのメソッドで発生する必要があることと直交していることを確認できます。これは、反復ごとに可能な項目を切り替えることです。これにより、テストが容易になります。追加の指示を変更したり、それぞれの場合に何が起こるかを簡単に変更できます。コードが読みやすくなります。また、さらに別の指示がある別のケースがあれば、それも簡単になります。

覚えておいてください: 各メソッドは 1 つのことだけを行う必要があります。

于 2013-08-09T18:25:56.273 に答える
0

ケースの中に「Some Instuctions」コードを書いてみてください。そのため、case が something: only の場合に実行されます。

于 2013-05-01T11:59:03.250 に答える