Re: 物件導向的缺點?? - 精華區OOAD

文章推薦指數: 80 %
投票人數:10人

物件導向的功用除了程式碼再利用, 還有team work 和應付變化等等的優勢, 而其中最重要的就是應付變化。

要應付變化基本上就是使用繼承和多型, ... 批踢踢實業坊 › 精華區betaOOAD 關於我們 聯絡資訊 返回上層 作者tinlans()看板OOAD標題Re:物件導向的缺點 ??時間ThuJun1213:46:422008 ※引述《ji3g45j(pig)》之銘言: :※引述《SureWin(surewin)》之銘言: ::想問一下 ::現在大家都用物件導向 的分析設計甚至 ::coding 現在很熱門 ::我想問一下 那它有沒有缺點阿 :: 有沒有 什麼資料 是探討它的缺點的 ::  :C++比C擁有的語法多得太多了,只要對C++沒有深入了解的人是非常容易寫出 :效率差的程式,這大概就是缺點吧。

:為什麼要寫軟體,無非就是要創造一個現實能用的產品。

既然談到現實世界, :物件導向就變得非常得有用,它讓你的程式設計的思考方向,很趨進現實世界 :所需要建立的各種元件來達成功能,而且有時後元件還能夠重複使用。

物件導向的功用除了程式碼再利用, 還有teamwork和應付變化等等的優勢, 而其中最重要的就是應付變化。

要應付變化基本上就是使用繼承和多型, 多型在C也可以實現, 在struct裡利用一個int或enum欄位標示真實型別, 然後放個union或void*型別的datamember, 而virtualfunction的概念也可以用functionpointer實作, 而這些type和pointer的切換全部由programmer負責, 若是OOPL的話可以由compiler幫忙產生相關的code, 所謂的效率變差問題完全不存在, C要寫成彈性高到能應付多變的需求時也是需要手寫這些code, 而這些手寫的code未必會比compiler內部產生出來的還有效率, 發生的人為失誤的機率也會提高。

如果你開發的軟體不需要應付變化, 生命週期也很短, 那麼不使用物件導向機制也可以做得很好, 效率也會比較棒, C++也允許programmer這麼做。

彈性、效率、記憶體用量常常是難以兼得的東西, 物件導向本身偏重在彈性, 選了物件導向基本上就是選了彈性犧牲另外兩者, 當然在一個專案裡物件導向絕對不是allornone的東西, 你可以選擇偏向UI的地方使用物件導向, 以獲得最大的彈性和應變力又不失效率, 因為用80/20rule來審視的話UImodule的話, 它通常不會是影響80%效率的那20%程式。

我個人都是先用純OO把程式寫一遍, 真的需要效能的話再用效能分析器去查效能瓶頸在哪, 不然每寫一行就要擔心它效率好不好, 東西不知道要寫到哪天才寫得出來, 上個世紀的程式偏小所以很多programmer這樣做沒問題, 但那種做法在這個世紀行不通。

至於學生做研究的話方法可能會做產品不太一樣, 演算法的部分可能也會用OO做抽象化, 讓演算法和演算法細部的行為可以在runtime切換, 提升實驗的效率和數據的豐富性。

-- Ling-huaTseng([email protected]) DepartmentofComputerScience,NationalTsing-HuaUniversity Interesting:C++,Compiler,PL/PD,OS,VM,Large-scalesoftwaredesign Researching:SoftwarepipeliningforVLIWarchitectures Homepage:https://it.muds.net/~uranus -- ※發信站:批踢踢實業坊(ptt.cc) ◆From:61.230.222.248 推wupojung:缺點不會的人就是不會...不熟的人會亂寫06/2301:05 推opman:不想學的,還是不想學.07/0111:58 推revivalworld:@[email protected]07/1223:00 推legnaleurc:哪個東西不是這樣?XD07/1415:57



請為這篇文章評分?