为什么要“避免方法重载”?

为什么Jorge Ortiz建议避免方法重载?


开心每一天1111
浏览 531回答 3
3回答

萧十郎

Gilad和Jason(重新命名)给出的原因都是避免过载的很好理由。吉拉德(Gilad)的原因集中在为什么重载通常是有问题的,而杰森(Jason)的原因集中在为什么在其他Scala功能中它是有问题的。在Jason的列表中,我要补充一点,重载与类型推断的交互作用很差。考虑:val x = ...foo(x)推断类型的x更改可能会更改foo调用哪个方法。该值的x需求不会改变,只是推断类型的x,这可能发生的各种原因。由于给出的所有原因(还有更多我确定会忘记的原因),我认为应尽量少使用方法重载。

猛跑小猪

我认为建议不是特别针对scala的,而是针对OO的(到目前为止,我知道scala应该是OO和功能之间的最佳选择)。覆盖是好的,它是多态性的核心,并且是OO设计的核心。另一方面,过载更成问题。使用方法重载很难辨别哪个方法将被真正调用,并且确实经常引起混淆。也很少有理由说明为什么确实需要重载。大多数时候,可以用另一种方法解决问题,我同意超载是一种气味。这里的一篇文章很好地解释了“超载是混乱的根源”的含义,我认为这是不鼓励这样做的主要原因。它适用于Java,但我认为它也适用于Scala。
打开App,查看更多内容
随时随地看视频慕课网APP