Re: [問題] 變數宣告在if結構裡

看板C_Sharp (C#)作者時間10年前 (2014/05/20 11:18), 10年前編輯推噓3(305)
留言8則, 5人參與, 最新討論串5/5 (看更多)
先簡單結論一下, 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
你如果認為,你的範例son:father OK就OK吧!
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
文章代碼(AID): #1JUicVC1 (C_Sharp)
文章代碼(AID): #1JUicVC1 (C_Sharp)