作者TonyQ (心存善念盡力而為)
看板Soft_Job
標題Re: [閒聊] OOP小評
時間Tue Mar 3 09:30:44 2015
※ 引述《csfgsj (Lazy bone)》之銘言:
: ※ 引述《xtxml (赤木巧☠)》之銘言:
: : 大哥,你到底懂不懂『繼承』這兩個字的意思啊?
: 我對「繼承」的了解是:
: 對既有源代碼的再利用
: 它很像API,卻不是API
: 主其事又把它宣傳的像是API
: 說穿了,就是將既有的源代碼,以所謂Class為單位
: 作全部的Copy & Paste
: 這個動作你不用作,Compiling的時候Compiler會自動幫你作
: 跟傳統Copy & Paste比起來,它的特性是:
: 1, 只能Copy & Paste整個Class,不可分拆,不可減少
......你可以減少,也可以分拆啊。
甚至你不喜歡現在的繼承樹,你也可以寫 wrapper 拆出新的繼承樹。
只要 class allow overwrie ,基本上這取決於實作者自己的需要啊。
那你怎麼解讀 overwrite 這件事情?
如果你完全不想 copy & paste class 實作,那 interface 是你的選項。
: 2, Copy & Paste 使用者不會知道,到底Copy 到了什麼
這問題我認為答案是不一定,他可以不知道,也可以知道。
: 3, 只能對Class作業,單獨的Struct、Function等不接受「繼承」
我比較好奇在這定義底下,你怎麼看 function currying 這件事情。
: 4, 有一堆GGYY的規則要遵守,什麼覆蓋不覆蓋之類的..etc.
......
請定義「GGYY」。XD
你前面 12 跟你的 4 剛好打架打一團,
現在是在演以子之矛攻子之盾嗎?
: 所以它比起傳統Copy & Paste死板、麻煩多了
: 也比較「隱晦」
: 傳統Copy & Paste強迫你去了解Copy & Paste的對象
: 「繼承」刻意要你去當瞎子
: 如果你不想當瞎子,想自己會往下挖
: 「OOP」會有很多地方等著來折磨你,讓你知難而退
是喔,我都不知道原來改個變數名稱要改 n 個複製地方還要擔心漏掉,
原來是要我們好好了解 copy & paste 對象的寶貴苦思咧。
我認為這是無生產力而且讓開發成本大幅上升的一個蠢論述。
討厭 oop ,你可以用 functional 概念,
包裝重複利用程序以利處理,
不去使用繼承樹跟介面帶來的好處(或壞處),仍然能確保邏輯一致性。
但如果回到 copy & paste 來 break DRY 原則,
這問題除非你前提是你的程式碼根本不會被 copy & paste,
或者是你 copy & paste 之後永遠不會修改程式碼。
不然對我來說,
等於毫無意義的通篇謬論。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.183.125
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1425346247.A.3C4.html
※ 編輯: TonyQ (61.228.183.125), 03/03/2015 09:31:53
※ 編輯: TonyQ (61.228.183.125), 03/03/2015 09:35:38
※ 編輯: TonyQ (61.228.183.125), 03/03/2015 09:36:02
→ yzugsr: s/overwrit?e/override/g ?? 03/03 14:12
→ TonyQ: @yzugsr you are right. 這兩個字我老是抓不準時機。XD 03/04 11:51
→ csfgsj: 解決問題的方案,剛好就是問題的來源 03/05 09:14