ネストされたswitchステートメントの使用を組み込んだメソッドを今日書いたので、コードはかなりきれいでわかりやすく見えましたが、ネストされたswitchステートメントは通常、あなたが追加したより多くのswitch文で混乱を招くことがあります。ここに私のコードは次のように見えたもののサンプルです:Javaのネストされたスイッチステートメントの代わり
EnumOne enumOne;
EnumTwo enumTwo = null;
EnumTwo enumThree = null;
switch (enumOne) {
case CASE_ONE:
switch (enumTwo){
case A: enumTwo = EnumTwo.B; break;
case C: enumTwo = EnumTwo.D; break;
default: break;
}
switch (enumThree) {
case AA: enumThree = EnumTwo.BB; break;
case CC: enumThree = EnumTwo.DD; break;
default: break;
}
break;
case CASE_TWO:
case CASE_THREE:
switch(EnumTwo) {
default: break;
}
switch (enumThree) {
case AA: enumThree = EnumTwo.XX; break;
case CC: enumThree = EnumTwo.YY; break;
default: break;
}
break;
default:
break;
}
だから私の質問は、これらのswitch文に適切な代替どのようになるか、基本的に、でしょうか?
何を使用していますか?ステートマシンをモデル化するには? – flup
したがってenumTwoはenumの1,2、および3の値に応じて値を設定しますか?なぜ新しい値を返すenumTwoのメソッドを持っていないのですか?状態パターンと同様です。 –
多くのネストされたswitch/ifステートメントの使用は、通常、設計上の欠陥を示します。特に、OO言語でこれを行う場合は、利用可能な機能を使用する必要があります。 – gersonZaragocin