我为什么不给null一个意思呢?

时间:2014-06-21 03:00:48

标签: java null

前几天我正在阅读Tom Hawtin - tackline's profile,我读了这条诫命:

  

请不要给空值赋予意义。投掷NPE。

我想知道关于第一句话的两件事: 为什么

首先,为什么。为什么呢?

其次,如何。让我举个例子:

BigDecimal sales = ...;
BigDecimal cost = ...;
BigDecimal profit = sales.subtract(cost);
// Profit Margin = profit / sales
BigDecimal profitMargin = profit.divide(sales, 20, RoundingMode.HALF_UP);

在这里,我们正在计算利润率。但有时,sales将为0.因此,在这种情况下:

BigDecimal profitMargin = sales.compareTo(BigDecimal.ZERO) == 0 ? null : profit.divide(sales, 20, RoundingMode.HALF_UP);

我们说当没有销售时profitMarginnull。这很有道理,对吗?有更好的解决方案吗?也许你可以说当没有销售时利润率为零,但这并不完全准确。也可以说零销售给你无限的利润空间。但零和无限都无法准确描述零销售利润率。 未定义 效果最佳。这正是null传达的内容。

这是我可以想象null具有非常有用的意义的许多情况之一,这些意义可以传达很多信息。

我误解了诫命吗?如果没有null ??

,你将如何处理上述情况?

0 个答案:

没有答案