大家好,我有一个非常简单的问题:
我有以下代码:
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. } }
这是一个好的设计吗?
大家好,我有一个非常简单的问题:
我有以下代码:
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. } }
这是一个好的设计吗?
switch 语句的基本思想是有多个可供选择的选项。
在您的示例中,您只有一个,因此使用 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 切换语句。
不,原因很简单,您违反了“做一件事”原则。反而:
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();
}
}
}
通过这种方式,您可以确保您的附加指令与此方法中需要发生的事情正交:即在每次迭代的可能项目之间切换。这使测试更容易。它使更改您的附加说明或每种情况下发生的情况变得更加容易。它使您的代码更易于阅读。而且,当您有其他案例以及其他说明时,这也很容易。
请记住:每种方法都应该做一件且只做一件事。
您可以尝试在案例中编写您的“一些指令”代码吗:。所以它会在 case 是什么时执行: only。