gpt4 book ai didi

scala - 接口(interface)中的所有/大多数方法都应该返回 Option 吗?

转载 作者:行者123 更新时间:2023-12-02 00:58:56 24 4
gpt4 key购买 nike

让所有可能存在未来实现且无效参数返回选项的接口(interface)(特征)方法是一个好习惯吗?

让我举个例子。如果我要实现一个具有特征的概率分布库

trait Similarity {
def getDensity(): Double
}

由于大多数分布不是在整个真实空间上定义的,因此总是存在一些非法参数,例如高斯分布的非正方差。如果我理解正确,我应该返回一个 Option[Double] 而不是 Double 并抛出一个 IllegalArgumentException

我认为大多数函数/计算也是如此。在这种情况下,“最佳实践”是什么?我担心这会让图书馆变得过于笨拙。

谢谢

最佳答案

我不会抛出 IllegalArgumentException,因为问题不是参数,而是对象的状态。如果它是一个异常,IllegalStateException 将匹配。

但是,真正的答案取决于您期望调用者在出现问题时做什么。

如果他们自己抛出异常,那么你应该这样做,省去他们的麻烦。

如果他们会根据不可能的答案做一些不同的事情,那么 Option[Double] 是一个很好的指标。

Double.NaN 是一个值得了解但不太有用的可能性,它实际上是一个 Null 对象,但对于 Double 来说。

关于scala - 接口(interface)中的所有/大多数方法都应该返回 Option 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10815834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com