Re: 物件導向的缺點 ??

看板OOAD作者 ( )時間16年前 (2008/06/12 13:46), 編輯推噓4(400)
留言4則, 4人參與, 最新討論串5/13 (看更多)
※ 引述《ji3g45j (pig)》之銘言: : ※ 引述《SureWin (surewin)》之銘言: : : 想問一下 : : 現在大家都用物件導向 的分析設計甚至 : : coding 現在很熱門 : : 我想問一下 那它有沒有缺點阿 : :  有沒有 什麼資料 是探討它的缺點的 : :   : C++比C擁有的語法多得太多了,只要對C++沒有深入了解的人是非常容易寫出 : 效率差的程式,這大概就是缺點吧。 : 為什麼要寫軟體,無非就是要創造一個現實能用的產品。既然談到現實世界, : 物件導向就變得非常得有用,它讓你的程式設計的思考方向,很趨進現實世界 : 所需要建立的各種元件來達成功能,而且有時後元件還能夠重複使用。 物件導向的功用除了程式碼再利用, 還有 team work 和應付變化等等的優勢, 而其中最重要的就是應付變化。 要應付變化基本上就是使用繼承和多型, 多型在 C 也可以實現, 在 struct 裡利用一個 int 或 enum 欄位標示真實型別, 然後放個 union 或 void * 型別的 data member, 而 virtual function 的概念也可以用 function pointer 實作, 而這些 type 和 pointer 的切換全部由 programmer 負責, 若是 OOPL 的話可以由 compiler 幫忙產生相關的 code, 所謂的效率變差問題完全不存在, C 要寫成彈性高到能應付多變的需求時也是需要手寫這些 code, 而這些手寫的 code 未必會比 compiler 內部產生出來的還有效率, 發生的人為失誤的機率也會提高。 如果你開發的軟體不需要應付變化, 生命週期也很短, 那麼不使用物件導向機制也可以做得很好, 效率也會比較棒, C++ 也允許 programmer 這麼做。 彈性、效率、記憶體用量常常是難以兼得的東西, 物件導向本身偏重在彈性, 選了物件導向基本上就是選了彈性犧牲另外兩者, 當然在一個專案裡物件導向絕對不是 all or none 的東西, 你可以選擇偏向 UI 的地方使用物件導向, 以獲得最大的彈性和應變力又不失效率, 因為用 80/20 rule 來審視的話 UI module 的話, 它通常不會是影響 80% 效率的那 20% 程式。 我個人都是先用純 OO 把程式寫一遍, 真的需要效能的話再用效能分析器去查效能瓶頸在哪, 不然每寫一行就要擔心它效率好不好, 東西不知道要寫到哪天才寫得出來, 上個世紀的程式偏小所以很多 programmer 這樣做沒問題, 但那種做法在這個世紀行不通。 至於學生做研究的話方法可能會做產品不太一樣, 演算法的部分可能也會用 OO 做抽象化, 讓演算法和演算法細部的行為可以在 runtime 切換, 提升實驗的效率和數據的豐富性。 -- Ling-hua Tseng (uranus@it.muds.net) Department of Computer Science, National Tsing-Hua University Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: https://it.muds.net/~uranus -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.222.248

06/23 01:05, , 1F
缺點 不會的人就是不會...不熟的人會亂寫
06/23 01:05, 1F

07/01 11:58, , 2F
不想學的,還是不想學.
07/01 11:58, 2F

07/12 23:00, , 3F
@v@
07/12 23:00, 3F

07/14 15:57, , 4F
哪個東西不是這樣?XD
07/14 15:57, 4F
文章代碼(AID): #18KBXAAZ (OOAD)
討論串 (同標題文章)
文章代碼(AID): #18KBXAAZ (OOAD)