為什么Jorge Ortiz建議避免方法重載?
3 回答

蕭十郎
TA貢獻1815條經驗 獲得超13個贊
Gilad和Jason(重新命名)給出的原因都是避免過載的很好理由。吉拉德(Gilad)的原因集中在為什么重載通常是有問題的,而杰森(Jason)的原因集中在為什么在其他Scala功能中它是有問題的。
在Jason的列表中,我要補充一點,重載與類型推斷的交互作用很差??紤]:
val x = ...
foo(x)
推斷類型的x更改可能會更改foo調用哪個方法。該值的x需求不會改變,只是推斷類型的x,這可能發生的各種原因。
由于給出的所有原因(還有更多我確定會忘記的原因),我認為應盡量少使用方法重載。

猛跑小豬
TA貢獻1858條經驗 獲得超8個贊
我認為建議不是特別針對scala的,而是針對OO的(到目前為止,我知道scala應該是OO和功能之間的最佳選擇)。
覆蓋是好的,它是多態性的核心,并且是OO設計的核心。
另一方面,過載更成問題。使用方法重載很難辨別哪個方法將被真正調用,并且確實經常引起混淆。也很少有理由說明為什么確實需要重載。大多數時候,可以用另一種方法解決問題,我同意超載是一種氣味。
這里的一篇文章很好地解釋了“超載是混亂的根源”的含義,我認為這是不鼓勵這樣做的主要原因。它適用于Java,但我認為它也適用于Scala。
添加回答
舉報
0/150
提交
取消