Re: [請益] 多型用在哪
※ 引述《empireisme (empireisme)》之銘言:
: 請問多型的用途是?
ㄛ現在ㄉ想法4 沒有多型 只有介面
多型的用例之一
for(auto p_actor : actors)
p_actor->act()
對ㄛ來縮 p_actor實際上到底是什麼 並不重要
我只要知道他是actor會act就好
他有可能是warrior也可能是wizard, but i don't care
那麼寫久了 你就會看到一些反模式
if(auto p_wizard = dynamic_cast<Wizard>(p_actor))
p_wizard->cast_spell()
或者是
virtual void act() override {assert(false); /*not support*/}
前者的問題在於 就算有一種方法能讓dynamic_cast的效能神快
這個代碼卻涉及了對Wizard的知識 代表在統一處理actor的片段中多了一個特例
後者的問題在於 所有actor都應該要能act 為什麼你不支援
有可能是一個程式設計師只想要base class的特定功能 又懶得自己開一個新的
然後class越來越肥 可能大家都看過惹
這就是為什麼java標榜他只能單一繼承 然後又特例獨行搞了個implement interface
其實就是變向要你做到粒度 不然你會越寫越屎
所以縮 如果你只是要介面 為什麼不用template
template對許多不熟悉c++的工程師來說陌生
而且ide支援度不高 所以說c++ 20的concept真是好用
結合繼承的優點 又兼容了介面ㄉ彈性 那就是policy
就算不用policy 也可以用component的pattern
再不然 你也可以用pure abstract class來引入interface的風格
最後 現在go跟rust的interface跟trait 其實講的就是這件事
因為比起繼承還是多型啥的玩意兒 其實大家最關注的還是介面跟行為
--
推,重點是介面和行為
前面好可愛
寫中文好嗎 我不想看到平假名
會用介面的人通常都是同時用很多語言才有語感
明明就是使用的時機不同,什麼教沒有多型。。。。
介面是行為的抽象,多型只是調用不同物件的行為
注音文劣退
這開頭我以為我在楓之谷
推 寫多了也有這種感覺
注音教學:ㄉ一ㄠˇㄅㄠˋㄌㄜ˙ㄅㄢˇㄓㄨˇㄌㄞˊㄎ
ㄢˋ一ㄡˇㄇㄟˊ一ㄡˇ一ㄠˋㄕㄨㄟˇㄊㄨㄥˇㄊㄚ
打車跟打砲都是打,都是打,但細節的動作不同。OO屎一
堆
38
Re: [討論] 怎樣算是一個合格的junior cpp programme個人淺見,這點不見得是必要的,template 的 code 常常不好讀不好除錯 正確使用能寫出高彈性高效能的程式,但用過多維護跟閱讀起來會很痛苦 即便不用 template,日常大多數的事情都還是可以完成的, 如果是多人一起維護程式,有時為了提升可讀性,反而會避免太炫麗的 template 技巧 新人的話推薦不妨投資點時間,學習如何改善可讀性和與別人協作21
Re: [請益] Java後端薪水更高的方向springboot自帶tomcat, build成jar自己可以直接啟動成一個微服務, 打包成war再放進tomcat裡這是以前jsp servlet那個石器時代的作法, 你們用springboot卻這樣部署, 很大機率你們可能沒有真正了解springboot究竟要解決怎樣的問題20
Re: [請益] Spring boot的依賴注入降低耦合的例子在這個時代依賴注入最重要的用途,特別是在後端開發是讓Application 在多個不同的 環境下(Development, Production, local, etc) 能夠根據profile 組出能正確執行的Application 多型在這裡當然有他的地位,但是一般來說,大部分不接觸system boundary的service objects 是不太需要多型的,如果是java,那種一個interface 只有一個implementation12
Re: [心得]以策略模式重構switch case或if (影片)終於有空來加入討論啦~ 這邊有 markdown 好讀版: 這邊我也來提一下我的看法。為了閱讀方便我把一些 code snippet 複製在這邊: ```java= public double shippingFee(String shipper, double length, double width, double10
Re: [新聞] 前Google主管:人類寫程式時代已經結束: 看AI能不能寫code 就下個 copilot 玩玩看就知道了 目前支援copilot的IDE(沒列全部) 1. visual studio 2022 2. visual stduio code9
Re: [請益] 比物件導向更先進的程式設計思想?依照目前看CodeReview 大部分人寫程式的方式 其實都披著OOP的皮 寫不是OOP的程式 甚至還看過很愛嘴別人的主管3
Re: [閒聊] ChatGPT是語言模型不是搜尋引擎這個敘述也太強烈了吧? StackOverflow 上面不是只有 code template,重要的是有很多的討論和推論。 而且如果有新的library出來,很多人也會在StackOverflow上討論 關於這個議題,我來分享我最近遇到的案例 最近在工作上寫code遇到一個問題是,我發現,- 其實就是在做 instance 的管理 物件導向一個很重要概念就是 多型 所以你可以在 runtime 再決定 instance 到底是什麼 IoC 就是實體是外部送進來 不要自己去 new DI 只是在提示 要送東西進來的人說 你想要的是什麼東西