Java条件(检查条件中的第一个条件)

Java条件(检查条件中的第一个条件),java,conditional-statements,Java,Conditional Statements,所以我要检查5个或2个。在5或2之后会出现大量代码块。问题是,然后我想做不同的事情,这取决于它是5还是2。我不想对巨大的代码块使用单独的5或2条件(复制它会很麻烦)。我也不喜欢上面的方式,因为x实际上很长 有没有这样的说法: if((x == 5) || (x == 2)) { [huge block of code that happens] if(x == 5) five(); if(x == 2) two();

所以我要检查5个或2个。在5或2之后会出现大量代码块。问题是,然后我想做不同的事情,这取决于它是5还是2。我不想对巨大的代码块使用单独的5或2条件(复制它会很麻烦)。我也不喜欢上面的方式,因为
x
实际上很长

有没有这样的说法:

if((x == 5) || (x == 2)) {  
    [huge block of code that happens]  
    if(x == 5)  
        five();  
    if(x == 2)  
        two();  
}

我可以像上面那样做。我只是好奇这样的选项是否存在。

我能想到的一种方法基本上是在
if
条件中“别名”较长的布尔表达式:

if((x == 5) || (x == 2)) {  
    [huge block of code that happens]  
    if(first conditional was true)  
        five();  
    if(second conditional was true)  
        two();  
}  

我使用了非短路运算符来确保expr2得到分配。

我能想到的一种方法基本上是在
条件下“别名”较长的布尔表达式:

if((x == 5) || (x == 2)) {  
    [huge block of code that happens]  
    if(first conditional was true)  
        five();  
    if(second conditional was true)  
        two();  
}  

我使用了非短路运算符来确保expr2得到分配。

如果条件是大的、丑陋的,并且远不如
x==5
好,那么只需将结果存储在
布尔值中即可:

boolean expr1, expr2;

if (expr1 = (x == 5) | expr2 = (x == 2)) {  
    // huge block of code that happens
    if (expr1) five();
    if (expr2) two();
}

如果条件是大的、丑陋的,并且远不如
x==5
,那么只需将结果存储在
布尔值中即可:

boolean expr1, expr2;

if (expr1 = (x == 5) | expr2 = (x == 2)) {  
    // huge block of code that happens
    if (expr1) five();
    if (expr2) two();
}

我唯一能想到的就是为这两个选项设置一个标志。有点像这样:

boolean xWasFive = x == 5;
boolean xWasTwo = !xWasFive && x == 2;
if (xWasFive || xWasTwo) {
  ...
  if (xWasFive) doA;
  else if (xWasTwo) doB;
}
boolean wasFive = x == 5;
boolean wasTwo = x == 2;

if(wasFive || wasTwo) {  
   [huge block of code that happens]  
   if(wasFive)  
       five();  
   if(wasTwo)  
       two();  
 } 

我唯一能想到的就是为这两个选项设置一个标志。有点像这样:

boolean xWasFive = x == 5;
boolean xWasTwo = !xWasFive && x == 2;
if (xWasFive || xWasTwo) {
  ...
  if (xWasFive) doA;
  else if (xWasTwo) doB;
}
boolean wasFive = x == 5;
boolean wasTwo = x == 2;

if(wasFive || wasTwo) {  
   [huge block of code that happens]  
   if(wasFive)  
       five();  
   if(wasTwo)  
       two();  
 } 

也许是这样的:

boolean xWasFive = x == 5;
boolean xWasTwo = !xWasFive && x == 2;
if (xWasFive || xWasTwo) {
  ...
  if (xWasFive) doA;
  else if (xWasTwo) doB;
}
boolean wasFive = x == 5;
boolean wasTwo = x == 2;

if(wasFive || wasTwo) {  
   [huge block of code that happens]  
   if(wasFive)  
       five();  
   if(wasTwo)  
       two();  
 } 

也许是这样的:

boolean xWasFive = x == 5;
boolean xWasTwo = !xWasFive && x == 2;
if (xWasFive || xWasTwo) {
  ...
  if (xWasFive) doA;
  else if (xWasTwo) doB;
}
boolean wasFive = x == 5;
boolean wasTwo = x == 2;

if(wasFive || wasTwo) {  
   [huge block of code that happens]  
   if(wasFive)  
       five();  
   if(wasTwo)  
       two();  
 } 


我更关心的是[发生的巨大代码块]。我的第一个想法是“重构,有人吗?”这让我担心,这么多重量级的人在回答这个问题时并不关心这段代码中使用的if语句的数量。我不是一个有经验的程序员。这是一个严重的问题吗(条件的数量)?是的,绝对地,看看这个,我建议订阅他们的新信件。同时检查这个问题和这个问题。如果不使用if或条件检查,不可能完全编写代码,但好的OO肯定可以将其降至最低。我更关心的是[发生的大量代码块]。我的第一个想法是“重构,有人吗?”这让我担心,这么多重量级的人在回答这个问题时并不关心这段代码中使用的if语句的数量。我不是一个有经验的程序员。这是一个严重的问题吗(条件的数量)?是的,绝对地,看看这个,我建议订阅他们的新信件。同时检查这个问题和这个问题。如果不使用if或条件检查,不可能完全编写代码,但好的OO肯定可以将其减少到最低限度如果
x==5
x==2
被更复杂的东西所取代,那么可爱的内联可能很快就变得不可读了=/sooo多年的文化制约让人一看到就畏缩……)如果将
x==5
x==2
替换为更复杂的内容,那么可爱的内联会很快变得不可读=/
x==5?true:false
完全等同于
x==5
。肯定无法通过我的checkstyle/findbugsconfiguration@LouisWasserman-你完全正确,在实际操作中永远不会这样做。感谢代码审查,我编辑了我的答案<代码>x==5?true:false
完全等同于
x==5
。肯定无法通过我的checkstyle/findbugsconfiguration@LouisWasserman-你完全正确,在实际操作中永远不会这样做。感谢代码审查,我编辑了我的答案!!嗯,这是一个非常干净的解决方案嗯,这是一个非常干净的解决方案