Re: [閒聊] OOP小評
※ 引述《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
03/05 22:43, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
閒聊
1
26
以下文章回應了本文:
閒聊
4
55
完整討論串 (本文為第 33 之 43 篇):
閒聊
3
26
閒聊
0
2
閒聊
1
2
閒聊
6
21
閒聊
3
5
閒聊
1
1
閒聊
-8
31
閒聊
3
4
閒聊
1
5
閒聊
6
17