Re: [閒聊] OOP小評

看板Soft_Job作者時間9年前 (2015/03/05 22:34), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串33/43 (看更多)
※ 引述《csfgsj (Lazy bone)》之銘言: : ※ 引述《oaz ()》之銘言: : : 那我再舉例,假設鞋子(資料)有一個動作(程序)叫綁鞋帶 : : 你會預期 : : I. 鞋子.綁鞋帶() 會只作用在這雙鞋? : : II. 鞋子.綁鞋帶() 不但會作用在我腳上的鞋子,還會作用在隔壁鄰居的鞋子上 : : III. 所有人的鞋子的綁鞋帶動作,都統一在某間放裡 : 開放體系就是在我得到這雙鞋子時 : Struct Shoes {…..} : 我不必去預先設定我會對它作什麼動作 : 對鞋子的動作可能當時有一些 : A( shoes *); : 以後有可能再去想到另外一些 : B( shoes *) : 我不用一開始就把所有東西都設死 看了您的寫法,我很好奇您的 Highheels 的寫法 寫法一: strict Highheels { // cp Shoes // 新增 Highheels 特殊的 } Highheels_A(Highheels*) { // cp A() } Highheels_B(Highheels*) { // cp B() } 寫法二: strict Highheels { // cp Shoes // 新增 Highheels 特殊的 } 沒有 Highheels_A() 和 Highheels_B() 如果是寫法一,你在複製時要改超多東西的 你確定你不會出錯? 直接用繼承反而更省力安排 如果是寫法二 那是災難吧! 你確定不會有一天把 Shoes 或 Highheels 的欄位移除? 難怪你會說重構是鬧革命! 寫法二不是沒有人這樣玩,gtk 好像就是這樣寫 但 gtk 寫了一些 macro, 基本上是在做類似繼承的事 那是因為 C 不支援繼承 -- Sent from my Android -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.70.203.78 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1425566070.A.0FA.html

03/05 22:36, , 1F
有同感=_=
03/05 22:36, 1F

03/05 22:42, , 2F
以他的寫法而言,重構跟重寫是一樣的
03/05 22:42, 2F

03/05 22:43, , 3F
其實他從shoes特化為highheels也是重寫,哈哈哈
03/05 22:43, 3F
文章代碼(AID): #1K-6bs3w (Soft_Job)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 33 之 43 篇):
閒聊
3
26
文章代碼(AID): #1K-6bs3w (Soft_Job)