One More Recipe Against NULL

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

你知道NULL是什么吗?它是邪恶的。在面向对象编程中,你的方法可以返回NULL,可以接受NULL作为参数,你的对象可以将其封装为属性,或者你可以将其赋值给一个变量。所有这四种情况对你代码的可维护性都是不好的—毫无疑问。问题是要怎么做才好。让我们讨论一下“返回它”的部分,并在几年前讨论过的基础上提出一种“最佳实践”。

Integer max(List<Integer> items) {
  // Calculate the maximum of all
  // items and return it.
}

如果列表为空,这个方法应该怎么办?Java的Collections.max()会抛出异常。Ruby的Enumerable.max()会返回nil。PHP的max()会返回FALSE。Python的max()会引发异常。C#的Enumerable.Max()也会抛出异常。JavaScript的Math.max()会返回NaN

哪种方式才是正确的呢?异常、NULL、false还是NaN?

如果你问我,我的答案是异常。

但是还有另一种方法,比异常更好。就是这种方法:

如果列表为空,则将返回“default”对象。这个功能是在Python的max()函数中实现的:可以同时传递一个列表和一个默认元素,在列表为空的情况下返回该默认元素。如果未提供默认元素,则会引发异常。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-17 at 17:02

sixnines availability badge   GitHub stars