简化陈述

时间:2018-06-22 12:16:13

标签: java if-statement boolean

任何人都可以帮助或建议简化以下条件:

if (null == parentInstruction.getQuantity() || 
       (null != parentInstruction.getQuantity() && 
           (
           (parentInstruction.getQuantity().compareTo(BigDecimal.ZERO) == 0 && !canSkipTransTypeCds(parentInstruction)) || 
           (parentInstruction.getQuantity().compareTo(BigDecimal.ZERO) != 0)
           )
       )
   )  {
   return true;
}

2 个答案:

答案 0 :(得分:2)

尽管我通常是单if语句的拥护者,但是如果代码变得不可读,则最好将其拆分。

if(parentInstruction.getQuantity() == null)
  return true;
if(parentInstruction.getQuantity().compareTo(BigDecimal.ZERO) != 0)
  return true;
if(!canSkipTransTypeCds(parentInstruction))
  return true;

在第一个if语句parentInstruction.getQuantity()之后永远不能 成为null,否则它将已经返回,因此无需检查!= null

第二个if语句parentInstruction.getQuantity()之后将总是 0,否则它将已经返回,因此无需检查== 0

†:除非调用.getQuantity()当然会在同一时间更改值,但是由于它是一个吸气剂,因此我们假设它永远不会更改返回值。.

答案 1 :(得分:1)

如果您真的想要单线,那就归结为:

Mockito.when(...).thenReturn(valuetoReturn)

我个人建议凯文的做法。