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 语句的基本思想是有多个可供选择的选项。

在您的示例中,您只有一个,因此使用 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 切换语句

于 2013-05-01T12:02:56.053 回答
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(); 
     }
  }
}

通过这种方式,您可以确保您的附加指令与此方法中需要发生的事情正交:即在每次迭代的可能项目之间切换。这使测试更容易。它使更改您的附加说明或每种情况下发生的情况变得更加容易。它使您的代码更易于阅读。而且,当您有其他案例以及其他说明时,这也很容易。

请记住:每种方法都应该做一件且只做一件事。

于 2013-08-09T18:25:56.273 回答
0

您可以尝试在案例中编写您的“一些指令”代码吗:。所以它会在 case 是什么时执行: only。

于 2013-05-01T11:59:03.250 回答