2009年4月21日 星期二

OOP的十八項迷思

物件導向程式設計(OOP - Object Oriented Programming)的發展
已有二十幾年﹐許多 OOP 的擁護者也試圖說服大家﹐OOP 是一套適用各處﹑
利多於弊的模型﹑方法。然而現實的情況是否真如他們所宣稱的完美呢?有
人提出了十八項 OOP 的迷思﹐讓大家反相思考。

這十八項迷思分別如下:

OOP 已被證實可適用於任何場合
OOP 能更逼真地模擬真實世界
OOP 讓程式設計工作更加視覺化
OOP 讓程式設計更容易﹑更快
OOP 免除了 "case" 或 "switch" 指令的複雜性
OOP 減少須要修改的地方
繼承(Inheritance)增進重覆利用性
大部份的東西都能在層次分類中適得其所
只有 OOP 能自動收集垃圾(garbage collection)
只有 OOP 能建立元件
OOP 已防止了 Y2K 問題
內容實作的改變顯然通常比介面重要
程式化/關聯性語言將變數型別和大小和程式碼綁得較緊密
程式化/關聯性語言不能 "factor"

這篇的作者認為﹐事實上物件導向支持者不斷地嘗試展現
(範例http://www.geocities.com/tablizer/challeng.htm)OO 的優越性﹐
但都失敗了。『他們引起很大的騷動﹐卻無法實現美夢。』

關於以上諸多迷思﹐作者或多或少都進行了有力的反駁﹐例如有太多實
例證明採用 OOP 的軟體專案﹐如果沒有良好的規劃管理﹐OOP 並無法帶來
什麼好處﹐而有些用非 OOP 的 COBOL 語言來規劃專案﹐也能良好地達到
『重覆使用』﹑『彈性高』的特色。

物件導向程式設計是不是萬靈丹?這是一個複雜而且爭議性極高的問
題。無論如何﹐電腦﹑軟體﹑程式設計方法﹐都是幫助人類解決問題的工
具﹐如果因為個人喜好﹐甚至信仰﹐而忽略了用『解決問題』這個最大前
提來進行思考﹐恐怕難免有失偏頗﹐應從技術﹑理論﹑實作等三方面來理
性討論。歡迎讀者發表您的意見。

只有物件導向資料庫能儲存大量﹑多媒體的資料
OODBMS 整體而言快於 RDBMS
C 是最佳的程式化語言

沒有留言:

張貼留言