亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么要“避免方法重載”?

為什么要“避免方法重載”?

為什么Jorge Ortiz建議避免方法重載?
查看完整描述

3 回答

?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

Gilad和Jason(重新命名)給出的原因都是避免過載的很好理由。吉拉德(Gilad)的原因集中在為什么重載通常是有問題的,而杰森(Jason)的原因集中在為什么在其他Scala功能中它是有問題的。


在Jason的列表中,我要補充一點,重載與類型推斷的交互作用很差??紤]:


val x = ...

foo(x)

推斷類型的x更改可能會更改foo調用哪個方法。該值的x需求不會改變,只是推斷類型的x,這可能發生的各種原因。


由于給出的所有原因(還有更多我確定會忘記的原因),我認為應盡量少使用方法重載。


查看完整回答
反對 回復 2019-10-16
?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

我認為建議不是特別針對scala的,而是針對OO的(到目前為止,我知道scala應該是OO和功能之間的最佳選擇)。


覆蓋是好的,它是多態性的核心,并且是OO設計的核心。


另一方面,過載更成問題。使用方法重載很難辨別哪個方法將被真正調用,并且確實經常引起混淆。也很少有理由說明為什么確實需要重載。大多數時候,可以用另一種方法解決問題,我同意超載是一種氣味。


這里的一篇文章很好地解釋了“超載是混亂的根源”的含義,我認為這是不鼓勵這樣做的主要原因。它適用于Java,但我認為它也適用于Scala。


查看完整回答
反對 回復 2019-10-16
  • 3 回答
  • 0 關注
  • 560 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號