天天看點

不要再面向對象

如果你是一個初學者,正在努力的學習各種軟體開發的技能,希望今後能夠從事軟體開發工作。那麼在學習的過程中,就先丢掉面向對象,對于你來說面向對象是一顆毒瘤,他不會給你帶來軟體上更高層次了解,恰恰相反,你的邏輯思維正在被它慢慢的毒化,一堆似有似無的概念會把你的了解徹底毀掉,進而很難清楚的了解到底程式的本質如何,當你隻會念叨“一切皆對象。”卻擠不出一行代碼的時候,那說明你已經病入膏肓。

應該說百分之九十九的計算機專業都開設有面向對象這門課程,我們現在所使用的大部分語言都是進階語言,例如:Java,C#這類的純面向對象的語言。雖然大學課程中在開設面向對象之前都會先教受學生學習類似C語言這種面向結構化的開發語言課程作為學習的基礎。 “C,都過時了,現在都是java 和C#的天下。”我想不少初學者都會用這種不屑的眼光來看待這些所謂落伍的課程。我們都知道一個蓋樓的基本道理:“先打實地基,然後再在上面按照先前的設計修建好各種樓宇。”蓋樓需要先打地基,地基要結實才能保證大樓傲然挺立,如果沒有地基,再好的樓宇也遲早會坍塌。而且再漂亮的樓宇你也無法看到它的地基。

面向對象的提出主要是解決面向結構軟體開發中代碼可複用性和可維護性不佳的問題,從軟體學的本質來說,面向對象并沒有改變軟體運作的本質,所改變的隻是代碼開發中問題處理和思維方式,所有的進階語言都是經過編譯器的處理轉換成後成為一條一條的指令代碼。是以如果希望能夠對程式有比較好的了解,就需要了解運作的實際狀态。透過高度抽象的層層煙幕看清實質是做軟體開發的基本功力。如果要對程式設計語言進行歸類,最簡單而有實效的劃分就是彙編指令程式設計語言和進階程式設計語言,無論是C,C++,C#,Java都是一種進階程式設計語言。不論是哪一種進階程式設計語言,最終的形式都會轉換成CPU運作的一條一條指令後運作,目前計算機的CPU中還無法直接運作進階程式設計語言的代碼。

是不是說學不好結構性的程式設計語言就無法學好面向對象呢?答案應該是肯定的,面向對象是在結構性程式設計語言上抽象而來的,應該說面向對象所處在的層次要遠遠高于結構性程式設計語言,面向對象的學習難度和周期都要高于面向結構的程式設計語言。面向對象的技術起點也是基于面向結構,在面向對象的開發過程中需要開發大量的函數,這些函數用的都是結構化處理的思想。如果你連基本的結構性程式都很理處理的一塌糊塗,你如何在更高的層次上進行抽象?

是不是用面向對象語言寫出來的程式就是面向對象呢?有多少人用面向對象的語言寫出的代碼是一片混亂,重複使用的代碼沒有進行抽象。一個類中的函數分不清楚什麼時候應該用Private, Protected,Public。類對于他們來說就像是面向結構中的一個檔案,隻是用來進行管理代碼。

所有的初學者們,面向結構的語言并沒有過時,如果你們的老師在沒有先讓你學好面向對象之前就讓你上馬學習面向對象,那麼他就是用一種不負責任的态度進行教學。浮沙之上豈能築高台。先靜下心來,切忌浮躁,一步一個腳印才能走得更遠。不是說你知道了類,對象,屬性之後就表示你會了面向對象。

本文轉自小餘(Yice)部落格園部落格,原文連結: http://www.cnblogs.com/yice/archive/2008/05/11/1191984.html   ,如需轉載請自行聯系原作者