Re: 物件導向的缺點 ??
※ 引述《legnaleurc (CA)》之銘言:
: : 推 thinkniht :"過度疊床架屋"?什麼意思啊?看不懂=.=+ 07/14 18:47
: : 推 cplusplus :過度抽象化? 07/17 07:55
: : 推 H45 :疊床架屋,私以為是動態連結的意思。 07/17 09:17
: : 推 JustinHere :一層包一層,層層抽象化。。XD 07/20 22:41
: 就是過度抽象化的意思
: 以下舉一個很極端的例子:
: 需求是寫一個九九乘法表
: 於是你開始分離概念
: 你把"九九"抽象出來,讓它可以自由更動,想要99*99也行
: 你把"乘法"抽象出來,讓它不只可以做整數乘法
: 也可以傳一個functor進去做運算子
: 甚至可以把整數換成浮點數,或其他任何瘋狂的物件
: 只要它能夠運算
: 你把"表"也抽象出來
: 讓它也可以匯出成XML,或是其他格式
: 然後你又考慮到了多緒執行時的優化
: 因此你加入了另一個policy
: 讓客戶可以選擇要單緒優化或是多緒優化
: 恭喜!
: 現在你有了一個神之框架
: 它不只能做九九乘法,連對數表或是T型分佈對照表都做得出來
: 還可以在支援多緒時加速執行
: 不過你花了一星期去做它
: 別人只花了二分鐘就做完了
抽象化會過度,以此例看的很清楚:
需求搞不清楚,軟體的功能也不會清楚。
需求搞得清楚,軟體的功能就會很清楚。
人家要的東西如果是「九九乘法表」,軟體又何必做一個「九十九乘法表」
更別說「對數表」這種需求壓根兒沒提到的東西。
要決定什麼模組要抽象化,亦即隱藏實作的細節,只揭露呼叫的介面
主要是看什麼部份會變化、什麼部份不會變化
把那些不會變動的部份寫死在程式碼中,而那些會變動的,就進行抽象化
在執行期決定最後的數值與函數的參數,或者呼叫動態連結的函式庫。
過度的抽象化,我想只有需求不明確或是錯誤地分析才會導致這樣的失誤。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.178.147
討論串 (同標題文章)
OOAD 近期熱門文章
PTT數位生活區 即時熱門文章