Re: [問題] 變數宣告在if結構裡
先簡單結論一下,
1. 基於原PO的命名方法,我很直覺的就認為原PO的son/father類別,
分別是指"子類別"與"父類別",而不是"兒子"類別和"爸爸"類別。
兒子是要繼承什麼鬼? 又不是爸爸掛了。
2. "子類別"繼承"父類別"是天經地義的廢話。事實上,也已經的確這麼實作了。
看不懂到底是在打誰的臉。
3. 即便原意是別的意思,基於只有看到strA, strB兩個屬性,
我認為只有超能力才能判斷這兩個類別該不該繼承。(用你的話 有沒有is)
4. 講錯的觀念就是錯的,即使後來改成"類別不該繼承自衍生類別"也不會比較好
抽象類別也可能是衍生類別。講錯人人都會,沒什麼。硬拗比較令人不耐煩。
5. 附贈以下說明,多了沒有了,花掉太多時間。
作者: adrianc (123) 看板: C_Sharp
標題: Re: [問題] 變數宣告在if結構裡
時間: Tue May 20 11:18:52 2014
※ 引述《StupidGaGa (笨嘎嘎)》之銘言:
: 標題: Re: [問題] 變數宣告在if結構裡
: 時間: Mon May 19 14:14:22 2014
:
: 類別本來不應該繼承類別,
: 類別是要繼承於抽像類別或介面。
:
: 就算不管DesignPattern,
: 我還是那句話,
: 類別不該繼承於類別,
: 類別應該繼承於抽像類別或介面。
:
: → ssccg:先不管son father這些名稱,為什麼類別不應該繼承類別? 05/19 17:22
------------------------------------------
昨天是午餐,今天是早餐...
首先我也很好奇"類別不該繼承類別"這句話是哪位大師說的,
可否指點一下?
為什麼ssccg大會說先不管這些名稱,因為原PO的命名本來就沒什麼好討論了。
如果你對son/father這麼有意見,換成sun/futher你會不會高興一點?
所以我才說你直接批我變數 xxx strA 還比較快...
sun/fucker有沒有所謂的"is"關係? 我又沒通靈我怎麼知道
另外你說我"認為在最小幅度內更動原PO程式碼"也是錯的。
我認為的是"既然你已經用了繼承,就不要用完還在寫重覆程式碼"。
已經用了的繼承正不正確? 沒有資訊,我無法判斷。
既然你說"繼承這種基礎概念反而是最需要釐清的",
那我真的想釐清一下,"類別不該繼承類別"是打哪來的說法...
甚至還有原則2"類別不能繼承類別,有兩個情況下才能打破"...
然後舉一個跟主題沒有直接關係的多階層繼承的例子。(多階層繼承不好)
我想Ga大是由依賴倒轉原則
--1. 高階模組不該依賴低階,兩者都應依賴於抽象
--2. 抽象不應依賴細節。細節應依賴抽象。
加上 Program to an interface, not an implementation (GoF)
聯想而來。原則內容先不贅述了。
其實我推文也有說,繼承自抽象是個好的習慣,
會避免違反設計原則和相關衍生問題。
甚至如果可以選擇的話,介面可能比抽象類別更好一點。
我們要繼承的對象,有幾種可能
1. 介面
2. 抽象類別
3. 類別
先簡單說明一下差別:
介面只定義了行為,也就是這個物件能提供我什麼服務,不管你是什麼,怎麼做。
抽象類別也定義了行為,且可能包含這種物件共同的部份實作。但是使用者仍然
無法直接實體化(new)這個類別。
類別則有自己的完整實作,可實體化。
如果今天你的論點是,對抽象開發,而不是實作。
OK,那今天的問題也不是
設計成繼承自抽象類別或類別,而是繼承自介面或/類別與抽象類別。
因為繼承自抽象類別一樣相依到共通實作的部份。
相依到實作會有什麼問題先暫不討論。
設計成繼承自抽象類別與類別,使用上的最大差異其實只在於
抽象類別強制你不能實體化,所以你必須在某個地方為他指定完整實作(具體類別)
這個限制用類別可不可以做到? 其實也可以...
真要說壞處的話,應該是繼承自類別可能覆寫掉某個已知的實作以致非預期的使用。
某種程度上,我覺得抽象類別像是一種設計演進過程中的過渡產品。
他建立了一定程度的抽象,同時為了共同的部份也保留了實作。
造成了使用者端很可能不得不依賴到部份的實作。
為了達成同性質的類別使用相同的實作避免重覆程式這件事,其實也有別的解法。
相關討論查查以組合取代繼承應該有不少說明。
關於介面和抽象類別的不同,我覺得由性質說明容易進入誤區。
換個角度解釋一下。
抽象類別的本質是一種類別的範本,繼承自此範本的類別都有著部份相似的性質。
使用者端引用這個範本,並預期這個範本產生的實體有規範中的性質
例如我叫來一個People,無論你是Male或Female,反正你都會Drive,怎麼Drive不管。
介面這個東西則是試圖完全隔開物件,達成更高階的抽象化。
我不只不在乎你怎麼做,甚至不在乎你是什麼。
例如我只知道我要一個ICanDrive,你給我隻會開車的猴子或香蕉我都不介意。
這樣就回歸到本質-參考一個類別時,是因為你預期這個類別會提供你某種服務。
最後,討論這個也不是自爽用的,至少在我的工作中不是。
銀子很實在,所以我平常都只潛水不回文多賺銀子無誤。
別動不動想打人臉,除非他是你孫子。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.109.209
※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1400555935.A.301.html
→
05/20 11:30, , 1F
05/20 11:30, 1F
→
05/20 11:31, , 2F
05/20 11:31, 2F
→
05/20 11:36, , 3F
05/20 11:36, 3F
→
05/20 13:25, , 4F
05/20 13:25, 4F
→
05/20 13:25, , 5F
05/20 13:25, 5F
※ 編輯: adrianc (220.134.109.209), 05/20/2014 13:51:37
推
05/20 14:04, , 6F
05/20 14:04, 6F
推
05/23 00:19, , 7F
05/23 00:19, 7F
推
06/07 09:11, , 8F
06/07 09:11, 8F
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章