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