【发布时间】:2021-05-14 03:57:33
【问题描述】:
我有这个代码
Instant now = Instant.now();
if (amountDays >= 0) {
now = now.plus(amountDays, ChronoUnit.DAYS);
} else {
now = now.minus(Math.abs(amountDays), ChronoUnit.DAYS);
}
我想像这样简化它
Instant now = Instant.now();
now = now.plus(amountDays, ChronoUnit.DAYS);
但是,我不确定 plus 是否可以在负值下正常工作,或者是否会弄乱结果。
我可以像这样使用plus,可能是负值吗?
【问题讨论】:
-
一般来说,如果你想回到过去,你当然应该更喜欢
minus。可读性很重要。然而,在这种特殊情况下,我会坚持使用plus并可能添加评论// amountDays can also be negative或者只是在您的 javadoc 中很好地记录它。投票结束,因为它是基于意见的。 -
请注意
plus的 javadoc,它说 “amountToAdd - 添加到结果中的单位数量,可能为负数” - 所以它是受支持的,也是预期的这个方法可以这样使用。 -
@Zabuzard,我问这个问题是因为我很好奇在执行时是否会发生错误,而不是
opinion-based。 -
minusdelegates toplus,所以应该没什么区别。 -
这纯粹是“风格”,没有技术上的区别。鉴于“减号”只使用“加号”这一事实,请选择第二种简单的解决方案,它需要更少的代码。
标签: java java-time java.time.instant