任何人都可以帮助或建议简化以下条件:
if (null == parentInstruction.getQuantity() ||
(null != parentInstruction.getQuantity() &&
(
(parentInstruction.getQuantity().compareTo(BigDecimal.ZERO) == 0 && !canSkipTransTypeCds(parentInstruction)) ||
(parentInstruction.getQuantity().compareTo(BigDecimal.ZERO) != 0)
)
)
) {
return true;
}
答案 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)
我个人建议凯文的做法。