Java条件(检查条件中的第一个条件)
所以我要检查5个或2个。在5或2之后会出现大量代码块。问题是,然后我想做不同的事情,这取决于它是5还是2。我不想对巨大的代码块使用单独的5或2条件(复制它会很麻烦)。我也不喜欢上面的方式,因为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();
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-你完全正确,在实际操作中永远不会这样做。感谢代码审查,我编辑了我的答案!!嗯,这是一个非常干净的解决方案嗯,这是一个非常干净的解决方案