大家好我有一个非常简单的问题:
我有以下代码:
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. } }
这是一个好的设计吗?
答案 0 :(得分:1)
switch语句的基本思想是有多种选择可供选择。
在你的例子中,你只有一个,所以使用switch语句并没有多大意义。
所以从你的例子来看,如果我正确地读它,我会做类似下面的陈述,这些陈述更清晰,更容易阅读。使用continue的问题在于它是一种跳转,结果源代码有点令人困惑。
for (...) {
if (something1 && something != other) {
if (something == something) {
// do the something stuff
}
// do the stuff that is for everything else
}
}
switch语句有一些限制,以及各种情况替代方案的外观会降低switch语句的灵活性。
请参阅有关switch语句的讨论以及如何将其限制为某些内置类型和枚举。 Java Switch Statement
答案 1 :(得分:0)
你可以尝试在案例中编写你的“Some Instuctions”代码:因此,当案件是:只有时,它将被执行。
答案 2 :(得分:0)
不,原因很简单,你违反了“做一件事”。原理。代替:
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();
}
}
}
通过这种方式,您可以确保您的附加指令与此方法中需要发生的操作正交:这是在每次迭代之间切换可能的项目。这使测试更容易。它可以更轻松地更改您的其他说明,或者在每种情况下会发生什么。它使您的代码更易于阅读。当你还有一些其他指令时,它也很简单。
请记住:每种方法都应该只做一件事。