面向對象並不是目的

我經常會讀到或聽到有人說一些“這個和那個不是正確的面向對象”,或“… 面向函數”,或諸如此類的言論。我以前也會發表這樣的言論——當我剛從大學出來的時候。這種的觀點在昨天這裏發表的一篇名爲”what we don’t need in object oriented programming“裏也體現了出來。

後來,在現實世界中,我知道了這真正的事實:

我們開發軟件並不是爲了讓它面向對象化,或遵循其它的模式。

我們開發軟件是爲了解決問題。

每一種編程模式(OO, FOP, AOP 等)都擅長於解決某一特定類型的問題,但沒有一個——我個人認爲——是全能的。所以,我覺得很幸運能有那麼多的工具和語言概念來供我們選擇,而不是限定於一種。用什麼樣的工具和什麼樣的思想,這依賴於我們要解決的問題的類型。

例如,現在已經是2010年了,爲什麼Java裏仍然沒有無符號基本數據類型?如果我必須對字節進行操作,那就麻煩了。爲什麼我們對使用什麼樣的基本類型的沒有選擇餘地呢?

相同的思路,爲什麼Scala裏只有對象類型?如果我要開發的某種軟件是用來操作二進制數據的,我可不希望Scala在屏幕後面爲我做什麼優化。我 希望自己能掌控它。如果我需要在大量的二進制數據上進行字節操作,這就有問題了,Scala的基本類型是常量化的嗎?於是,每一次操作我都要創建一個類型 實例?汗顏。

通常,當有些很精明的程序員對我的做法說三道四,卻又根本不知道我是在解決什麼問題時,我很苦惱。這就像是在說“我比你更知道你需要什麼,所以我們 不能用這個、那個工具/風格/架構”。但事實卻是,這些精明的思想家並不是更知道對於每個開發人員,什麼樣的工具或思路纔是他們解決相應的問題所需要的。 做個類比,這個極其類似那些精明的政治家宣傳自己最知道人們究竟應該怎麼活着…

總結一下:我們開發軟件是來解決問題的,只要能把問題正確的解決,它就是“正確”的方式。目前,看起來真正能夠做到這一點的編程語言陣營只有C#團 隊。我是個有11年Java編程史的Java迷,這樣說我也很受傷。但他們對於我來說就是這樣,這些C#的語言設計者真正的懂得這樣的事實:我們沒必要一 定強迫自己使用某種模式,我們要自己給出選擇。

 

 

 

翻譯來源:外刊IT評論

 

 

:-)

發佈了2 篇原創文章 · 獲贊 0 · 訪問量 3604
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章