Re: [閒聊] OOP小評
※ 引述《csfgsj (Lazy bone)》之銘言:
: 就是你在對一件事情作抽象化之前
: 你有沒有辦法對它作出清楚的定性定量
: 如果這個條件不成立,而去實施所謂的抽象化
: 那只是在製造一個「隱晦」的介面
: 曾經說過Class是萬惡之源
: 將DATA 加上Routine
: 一開始就註定了它將是一個無法清楚定性定量的東西
: 隨之而來的抽象化,自然無可避免的走向「隱晦」
跟你對話實在好玩,因為字句中有很多謎題可以解。
我試著讀懂所謂「定性定量」,並且,仍然很想知道之前你所說,
那一句讓我們軟體人讀了之後會改變一生的話。
定性定量,看最早你提到的,就是說,我們軟體人在學校學了那麼久,
都學些什麼呢?無非是定性、定量。
所謂定性,是認出事物的特性。例如,可以學會認出一般的邏輯系統所包含,
除了 minimal complete set 之外,就是可以由 minimal complete set 表達出
的非 minimal complete set 。
所謂定量,是涉及事物存在的數量,包括如統計學的東西、集合的有限元素或
無限元素的數量等等。
然後,你對於 OOP ,寫了一段有一點點錯誤的定性描述:
※ 引述《csfgsj (Lazy bone)》之銘言:
> 跟傳統Copy & Paste比起來,它的特性是:
> 1, 只能Copy & Paste整個Class,不可分拆,不可減少
> 2, Copy & Paste 使用者不會知道,到底Copy 到了什麼
> 3, 只能對Class作業,單獨的Struct、Function等不接受「繼承」
> 4, 有一堆GGYY的規則要遵守,什麼覆蓋不覆蓋之類的..etc.
> 所以它比起傳統Copy & Paste死板、麻煩多了
> 也比較「隱晦」
這是你對於 class 的定義,並且,你說因為 class 把資料與程序混在一起,
所以無法定性定量,而因為無法定性定量,東西多了就是「亞馬遜叢林」,
有一些危險或錯誤的東西也封裝在 class 中,所以不知何處會「竄出一條蟒蛇,
把你吃了」。
我說,你的想法根本錯誤。
Copy & paste 最讓人討厭的,是那個所 copy 出來又改過的東西裡頭,原有的內容
與修改的內容混在一起,根本記不住。要說定性、定量有問題,可成立:
每一個 copy 出去修改的版本,跟原版有什麼不同,難以定性;所有 copy 出去
修改的版本,總過有多少個,難以定量。
而 class 與繼承,並不是把整個 class 做 copy & paste 。
若仍要理解為 copy 吧,「到底 copy 到什麼」,也是很清楚:
一個繼承類別 class world_greetings extends greetings {}
明明很清楚告訴你 world_greetings copy 了的東西就是 greetings ,
那裡有寫不清楚的地方?
另外,所謂「 GGYY 的規則、覆蓋不覆蓋」的部份,則是很清楚的定性:
若在 world_greetings 類別中,覆蓋了 protected void hello() ,
這就是告訴你, world_grettings 與 greetings 類別有差異的地方就在於
protected void hello() 。
再用同一個 world_greetings 類別,來談所謂定量:
程式裡面到底有多少種 greetings 打招呼的方式?很明白,有寫到、有用到的
才算數。假如有寫到,但是沒用到,那就不必擔心。
最後,我猜你所說的「將DATA 加上Routine,註定是無法定性定量的東西」,
我要反問「是嗎」。你該不會覺得,將 data 和 routine 都放在 class 裡,
之後會在 class 裡突然冒出一個奇怪的東西,說它是 data 可是它是 routine ,
或者說它是 routine 可是它卻是 data 吧?如果是這樣,我只想回答:
想像力要有一個限度,不要太夢幻。
至於「亞馬遜叢林藏蟒蛇」的問題,根本是指大量程式碼 debug 的事情,
跟 OOP 無關。
最後的最後,再問一下,所以你說有可以讓我們軟體人改變一生的一句話,
到底是什麼?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.160.144.227
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1425526061.A.574.html
推
03/05 11:44, , 1F
03/05 11:44, 1F
→
03/05 11:47, , 2F
03/05 11:47, 2F
→
03/05 11:49, , 3F
03/05 11:49, 3F
推
03/05 11:52, , 4F
03/05 11:52, 4F
→
03/05 12:10, , 5F
03/05 12:10, 5F
→
03/05 12:27, , 6F
03/05 12:27, 6F
→
03/05 12:27, , 7F
03/05 12:27, 7F
→
03/05 13:20, , 8F
03/05 13:20, 8F
→
03/05 13:21, , 9F
03/05 13:21, 9F
→
03/05 13:22, , 10F
03/05 13:22, 10F
→
03/05 13:23, , 11F
03/05 13:23, 11F
→
03/05 13:24, , 12F
03/05 13:24, 12F
→
03/05 13:24, , 13F
03/05 13:24, 13F
→
03/05 13:25, , 14F
03/05 13:25, 14F
→
03/05 13:26, , 15F
03/05 13:26, 15F
→
03/05 13:27, , 16F
03/05 13:27, 16F
→
03/05 13:28, , 17F
03/05 13:28, 17F
→
03/05 13:28, , 18F
03/05 13:28, 18F
→
03/05 13:30, , 19F
03/05 13:30, 19F
推
03/05 13:40, , 20F
03/05 13:40, 20F
→
03/05 13:40, , 21F
03/05 13:40, 21F
→
03/05 13:40, , 22F
03/05 13:40, 22F
→
03/05 13:50, , 23F
03/05 13:50, 23F
→
03/05 21:53, , 24F
03/05 21:53, 24F
→
03/05 21:54, , 25F
03/05 21:54, 25F
→
03/05 21:55, , 26F
03/05 21:55, 26F
推
03/06 22:07, , 27F
03/06 22:07, 27F
討論串 (同標題文章)
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章