【发布时间】:2012-07-26 15:01:54
【问题描述】:
我使用 int[] 数组作为参考。我想知道我对 case 语句的使用是否合理,或者它是否会导致错误。
这是我的代码:
int switcheroo = intarray[0];
int foo = intarray[1];
boolean size = false;
boolean biggersize = false;
switch (switcheroo) {
case 0:
switch (foo) {
case 1:
doSomething(switcheroo); //change switcheroo somehow.
break;
case 2:
doSomethingElse(switcheroo); //change switcheroo differently.
break;
}
case 1:
size = true;
break;
case 2:
biggersize = true;
break;
default:
break;
}
除非是巧合,否则这会按照我的意愿将嵌套 case 语句的更改影响到其他 case。
我的问题是:
这种嵌套是否会导致进一步的麻烦?
是否缺少休息;在一个案例不好的做法之后?
谢谢。
编辑:在 switch 语句中间更改 switcheroo 的方法被放在那里以响应该问题。我不会这样做这是我的程序。
【问题讨论】:
-
这被广泛认为是一种不好的做法,是的。
break基本上是一个 goto,使控制流难以遵循。 -
doSomething(switcheroo); //change switcheroo somehow.=> 你不能在那个方法中改变switcheroo。并且在开关中间更改开关变量的值看起来不是一个好主意。 -
@millimoose 对所有
case语句不使用break有时被认为是一种不好的做法,但绝不是“使用break" a bad practice because it's agoto."break` 和continue已确定成为goto的唯一合法用途,这就是它们存在于语言中的原因。 -
@SeanKenny 不,我会直截了当地说。
-
否:break 不是一个好主意。它只留下嵌套代码。需要中断开关以停止开关解析。
标签: java switch-statement