作者yauhh (小y寶貝)
看板Soft_Job
標題Re: [閒聊] OOP小評
時間Thu Mar 5 11:27:38 2015
※ 引述《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
推 iceonly: 軟工大覺者,普渡眾生的一句話 03/05 11:44
→ robler: 程式寫的好 要飯要到老 03/05 11:47
→ StupidGaGa: 程式寫不好,雞排賣到老 03/05 11:49
推 enthos: "Use the FORTH, Luke." 03/05 11:52
→ nenpow: 可以不要再回他了嗎... 03/05 12:10
→ azureblaze: Don't feed the troll. 03/05 12:27
→ azureblaze: 打這種沒經驗值的啦 消耗裝備耐久度而已 03/05 12:27
→ yauhh: 我看到 "Use the Forth, Luke." 真的想開始學 Forth 了 03/05 13:20
→ yauhh: 我覺得,大家要理解,在網路上跟你講話的對象是一個人。 03/05 13:21
→ yauhh: 以前不懂,只從文字上分析人性。但是,大家若有興趣可以 03/05 13:22
→ yauhh: 試著把你感興趣的人約出來聊,就會想得更清楚,人很多樣的 03/05 13:23
→ yauhh: 真的有一種人沒有抽象思考能力,一碰到實例就無可自拔旋進 03/05 13:24
→ yauhh: 去那個實際的主題裡。然後你會了解這人是不是真的很好聊。 03/05 13:24
→ yauhh: 也許對方不好聊是個誤會。也許對方不好聊,是因為真人的 03/05 13:25
→ yauhh: 口語與思考習慣,是真的很難聊,例如極度分心的人。 03/05 13:26
→ yauhh: 另外,有人說,較沒有太多學校教育的人,對話空白容忍度低 03/05 13:27
→ yauhh: 而受過較多教育的人則對於對話空白的容忍度較高。有可能 03/05 13:28
→ yauhh: 因為容忍度低,而不時找一些未經思考的材料當做話題。或者 03/05 13:28
→ yauhh: 空白容忍度太高了,深度思考而出現不可言諭的描述方式。 03/05 13:30
推 iceonly: 他的問題是:真的打到他的文章就不會回,如同這篇,板主回 03/05 13:40
→ iceonly: 他的那幾篇,2005年吐他的那篇。會針對文章回應的才叫討 03/05 13:40
→ iceonly: 論,不是自說自話 03/05 13:40
→ sorryla: 他只看他想看的 說他想說的 不算再討論 只是想傳教 03/05 13:50
→ typiacalcat: 是放在soft_job比較失敗 因為內行人比較多 03/05 21:53
→ typiacalcat: 不知在toberich/soho會有多少人上鈎 03/05 21:54
→ typiacalcat: 這類碎念 外行人說不定會以為很厲害 03/05 21:55
推 jaceju: 嘴炮放得好,升官沒煩惱 03/06 22:07