作者aoksc (重出江湖)
看板C_Sharp
標題[問題] 繼承的缺點
時間Fri Jun 7 11:10:10 2019
請問各位
在跟同事說明少把工具方法直接寫在基礎類別
因為這樣會讓全部繼承的類別都擁有這方法
但這些方法又只有一兩個地方用到
有同事故意challenge說
寫在父類別又怎樣
沒用到就沒用到阿!
我也只能反擊說這會讓整個程式碼很雜亂
不過也的確就不要呼叫就好
不考慮到DI的問題我的反擊論點的確是很薄弱
請問有什麼更強力的觀點可以反擊繼承方法沒用到沒差
所以可以把方法都寫在父類別中的謬論
-----
Sent from JPTT on my HTC_U-3u.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.74.83.10 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1559877016.A.E1D.html
1F:→ annies5: 並不是要不要放在父類別,而是這個方法是不是「該」放在06/07 11:28
2F:→ annies5: 這裡06/07 11:28
對啦
我們是在討論適合不適合
我是認為只有有一兩個地方在用的方法不適合寫在父類別
※ 編輯: aoksc (42.74.83.10 臺灣), 06/07/2019 11:41:58
3F:→ t64141: 重點是這個方法是不是屬於這個類別內的功能,不是使用次數 06/07 13:36
4F:推 jizang: 繼承可以有多層,或者可以考慮實作界面。 06/07 19:21
5F:→ ssccg: 重點是這個方法是不是屬於這個類別內的功能,還有這個方法 06/07 20:19
6F:→ ssccg: 的存取權限該設成什麼,你只提工具方法、一兩個地方實在沒 06/07 20:20
7F:→ ssccg: 辦法具體討論適不適合 06/07 20:20
8F:→ ssccg: 那一兩個地方到底是哪一兩個地方,那方法到底是在幹麻 06/07 20:21
9F:→ CloudyWing: 是否可以舉個例子,我覺得重點不在是否只有一兩個地方 06/07 20:45
10F:→ CloudyWing: 使用,而是這個method和父類別或子類別哪個相關性高 06/07 20:46
11F:→ forewero: 我覺得這種Helper Function就用組合去做吧,用繼承可以 06/07 23:43
12F:→ forewero: ,但是當子類別也要用這個method,而且略有不同時該怎辦 06/07 23:44
13F:→ forewero: ?很容易就暴走了 06/07 23:44
14F:→ forewero: 而且後續維護的人會起笑 06/07 23:45
15F:推 Randy1230: 繼承 會使類別複雜 ,個人認為。看程式的需求以及維護 06/08 08:52
16F:→ Randy1230: 方式 06/08 08:52
17F:推 Litfal: 都不在乎,叫他回去寫函數導向就好了啊 06/08 12:43
18F:→ Litfal: 你不是主管也不是客戶,提點一下就好,他堅持就讓他堅持吧 06/08 12:45
19F:→ feeya: 可以考慮用static 來分類阿 06/10 11:57
20F:→ testPtt: 我想到wpf的attached property 完全不用改到原來的類別 06/10 21:29
21F:推 Nilife: 問他有沒有聽過可讀性 06/11 17:41
22F:噓 cia1099: c#的繼承不是只能有一層?沒什麼雜亂或c++的層層疊在一起 06/12 23:53
23F:→ cia1099: 吧 06/12 23:53
24F:→ t64141: C# 是不能多重繼承, 不是繼承只能有一層 06/13 00:28
25F:→ vi000246: 可以舉噴射機繼承鳥類類別的例子 06/13 00:37
26F:→ vi000246: 鳥類會飛、會叫 結果弄個飛機繼承它 整個邏輯都錯亂了 06/13 00:37
27F:→ vi000246: 為了一時的方便這樣搞 只會讓系統越來越難維護 06/13 00:38
28F:→ vi000246: 不過有些人的心態是會動就好.. 你不是主管就隨他去吧 06/13 00:39
29F:推 vi000246: 你可以google 裡氏替換原則 06/13 00:40
30F:→ testPtt: 只要鳥類沒有吃東西大便等多餘的功能 飛機繼承它是ok的 06/14 08:31