Re: 物件導向的缺點 ??

看板OOAD作者 (!H45)時間16年前 (2008/07/27 09:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串10/13 (看更多)
※ 引述《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
文章代碼(AID): #18YyeHCq (OOAD)
討論串 (同標題文章)
文章代碼(AID): #18YyeHCq (OOAD)