面向對象編程從骨子里就有問題
英文原文:Object Oriented Programming is Inherently Harmful
“面向對象編程是一個極其糟糕的主意,只有硅谷里的人能干出這種事情。” — Edsger Dijkstra (圖靈獎獲得者)
“面向對象設計是用羅馬數字做計算。” — Rob Pike(Go 語言之父)
““面向對象”這個詞包含很多意思。有一半是顯而易見的,而另一半是錯誤的。“ — Paul Graham(美國互聯網界如日中天的教父級人物)
“實現上的繼承就跟過度使用 goto 語句一樣,使程序擰巴和脆弱。結果就是,面向對象系統通常遭受復雜和缺乏復用的痛苦。” — John Ousterhout( Tcl and Tk 的創始人) Scripting, IEEE Computer, March 1998
“90% 的這些胡說八道都稱現在它很流行,非要往我的代碼里搓揉進面向對象的石粒。” — kfx
“有時,優雅的實現只需要一個函數。不是一個方法。不是一個類,不是一個框架。只是一個方法。” — John Carmack(id Software 的創始人、第一人稱射擊游戲之父)
“面向對象編程語言的問題在于,它總是附帶著所有它需要的隱含環境。你想要一個香蕉,但得到的卻是一個大猩猩拿著香蕉,而其還有整個叢林。” — Joe Armstrong(Erlang 語言發明人)
“我一度曾經迷戀上了面向對象編程。現在我發現自己更傾向于認為面向對象是一個陰謀,企圖毀掉我們的編程樂趣。” — Eric Allman(sendmail 的創造者)
面向對象是 90 年代“結構化編程”的萬金油,風靡一時,但很難說它就是那些用它開發出來的東西的“終極”編程模式。
并且,至少它的這種最流行的形式可能我帶來極大的危害,極度的增加復雜性。
繼承帶來的危害遠超過好處。這“代碼復用”的令人質疑的幌子下,我們的環境中被愚蠢的增添了大量的毫無用處的復雜性,使得必須引入大量的語法上的簡寫來讓這混亂得到最低限度的管理。
– 來自索尼公司 Tony Albrecht