開源框架學習

原文地址:http://www.javaeye.com/wiki/struts2/1356-how-to-use-ognl-in-struts2#1612

閱讀、仔細閱讀、反覆閱讀每個開源框架自帶的reference 

這一點是學習一個框架最最重要,也是最最一開始需要做的事情。不過事實上,無數的程序員對此並不在意。程序員總是以種種理由不仔細閱讀reference:

1. 看英文文檔太吃力

應該說閱讀英文文檔是每個程序員的基本素質之一,這就跟調程序需要耐心一樣。如果你連調試程序的耐心都沒有,那麼趁早放棄程序員這個行當吧。其實閱讀文檔,尤其是英文文檔,也是程序員的基本素質,這個素質是一點一點積累培養起來的。所以,對於那些實在覺得吃力的朋友,我的建議是結合中文文檔一起看。好在滿江紅的開源支持者爲你精心做了許多很有價值的翻譯,例如Spring,Hibernate等都有對應的中文文檔。但是我依舊認爲,看中文文檔,必須和英文文檔對照,否則你就可能迷失在許多的語義不匹配上。

2. reference實在太厚而抓不住思路

耐心,耐心,還是耐心。從reference的質量而言,其實多數的開源框架的reference都是相當優秀的。尤其是Struts2,基本上都是一個一個的專題wiki文章拼起來的文檔。至於說到Spring,那隻能培養你的耐心了。


我之所以強烈推薦大家仔細閱讀開源框架自帶的reference,主要基於以下的兩個原因:

1. 這些自帶的reference多數出自這些開源框架的作者之手。你說還有誰能夠比他們自己更瞭解他們自己的產品呢?自己寫的程序,到底有哪些優點,如何使用,自己肯定是最最清楚的,所以要說到權威,不可能有任何的文檔比自帶的reference更加權威。

2. 自帶的reference幾乎很少犯錯,所以不會給你帶來什麼的誤導信息。不僅如此,許多的reference已經爲你總結了許多框架使用過程中的最佳實踐。有那麼好的事情,爲什麼我們不直接去看這些reference來獲得第一手的資料呢?

當然,很多人看reference會覺得很枯燥。沒關係,我的建議是,多看幾遍。第一遍,你可以採取scan的方式,目的是瞭解框架的大概。第二遍,挑重點的章節仔細閱讀,並且輔以一定的代碼實踐。第三遍,帶着碰到的問題閱讀,在文檔中尋找答案。

少讀、精讀網絡教程,堅決不讀有價書籍 

對於很多初學者來說,看reference這種方式他們的接受程度很低。相反的,他們反而會去轉向一些書籍和網絡教程。針對這些學習材料,我就不得不帶着有色眼鏡去看待了。

目前市場上任何的有價書籍,我認爲完全沒有閱讀的必要。這些書籍的一大特點是貴,將花費你大量的銀子。而且這些書籍錯誤繁多,所挑出的示例也基本上毫無實踐意義。更加可悲的是,這些書籍中的很多示例,作者在寫的時候根本不動腦筋,也不會包含程序開發中的一些最佳實踐,甚至會給很多讀者以:“程序就是這麼寫的”這樣的誤導。

網絡上還有很多原版的教程,例如《XXX in Action》系列。《XXX in Action》系列的書籍在市場上深受好評。這些系列的書籍我很多都讀過,我並不認爲這一系列的叢書相對於框架自帶的reference有什麼過人之處,有某些地方的理解也帶有一些作者個人的感情色彩。其實每個人寫書或者寫文章都會帶上自己的感情色彩,這本不是什麼壞事,不過既然已經有了 reference,爲什麼我們要捨近求遠呢?當然,不得不說,這個系列的書籍還是寫得相當不錯的,只是相對reference而言,不如 reference來的好了。

同時,網友也提到了很多網絡教程。網絡教程,尤其是中文的網絡教程,基本上都是網友的經驗之談,也有寫成系列文章的。對於網絡教程,我的意見是:少讀,精讀。因爲網絡教程是網友自發的,而我不得不說,許多網友寫的網絡教程是一塌糊塗,誤導世人的。同時,也有很多網絡寫的網絡教程相當不錯,可以作爲入門級別的參考資料。但是對於初學者來說,根本很難分辨其中的好壞真僞。完全憑藉運氣去賭大小,押寶押對了就對了,押錯了就自認倒黴。所以,針對網絡教程,最好是帶着問題去讀,去搜索你的答案,而不是當作核心文檔來閱讀。

搭建環境運行每個開源框架自帶的sample項目 

我不知道有多少初學者真正的去跑過每個開源框架自帶的sample項目。按照我的經驗來說,這絕對是一個學習的最佳途徑。

以Struts2爲例,Struts2的根目錄下有一個apps的目錄,裏面有struts2-blank-2.0.11.war,struts2-showcase-2.0.11.war,struts2-portlet-2.0.11.war等war包。你只要把這些war包放到任何的application server的運行環境下即可運行。比如,你可以放到Tomcat的webapps目錄下,啓動Tomcat,你就可以直接訪問到一個內置了衆多Struts特性的項目了。

其實你可以從這些項目中獲得許許多多有用的信息。不僅如此,一旦你在使用Struts2的某些特性的時候發生了無法解決的困難,你往往也能從這些項目中找到一些解決問題的方案。更加能讓你放心的是,至少這些項目表達了Struts2的作者原本的意思,你只要按照它的sample來寫代碼,總不會錯到哪裏去。

在這裏,我簡單舉例來說明你可以從這些項目中學到些什麼:

1. 如果你仔細學習struts2-blank-2.0.11.war這個項目,它可以告訴你如何搭建一個最最簡單的Struts2的項目;它還會告訴你,Struts2至少需要依賴哪些jar包(請以後不要再爲jar包錯誤而苦惱);同時,也給你做出了一些範例,web.xml怎麼寫,struts.xml又怎麼寫。

2. struts2-showcase-2.0.11.war這個項目,你則可以看到Struts2的特性的大雜燴,這對於你看reference是相當有幫助的。比如說,你在看文檔時看到了"文件上傳"的章節,那麼你就可以參考項目中的upload子目錄。相當於你一邊看文檔,一邊已經有一個現成的跑得通的例子在這裏提供給你。這是不是要比那些所謂的網絡教程更實際呢?

3. struts2-portlet-2.0.11.war則給出了在Portal環境下的Struts2的應用。

所以,綜合來說,框架自帶的項目絕對是你學習的第一手資料,你基本上不需要捨近求遠得去找網絡上別人寫的例子,原生態,不好嘛?

自己寫一個sample項目親身體驗 

這一點其實不用我說,大家也應該明白。不過我還是見過不少的程序員,眼高手低。成天能夠和人吹牛說這個框架怎麼怎麼好,那個框架怎麼怎麼方便。讓他自己動手來用這些框架寫一段程序出來,手足無措,搞了半天,就是無法跑通。

所以,實踐是檢驗真理的唯一標準。只有自己親自動手去實踐,才能說你真正掌握了某個技術,理解了某個框架。在編寫自己的sample項目時,你不妨就以最簡單的User的增刪改查作爲你的業務場景,在實踐中不斷的重構你的代碼,從而提升自己的水平。

帶着問題debug開源框架的源碼 

如果你對某個開源框架的使用已經比較熟練,對其內部的原理也基本清晰了。你或許會對其中的某些設計原理產生一些問題(或許僅對勤于思考的人有效)。這個時候,我認爲你可以試圖去看一看開源框架的源碼。

我看開源框架的源碼的方式有些特殊,我喜歡在程序裏做debug,來看看在開源框架的內部,到底運行了哪些類,他們是如何執行的。我堅決反對逐個包逐個包的去看源碼,這毫無意義。因爲這相當於把一個肢體進行了分解,一個運行狀態良好的程序,你把它割裂開來,顯然什麼都讀不懂。在程序中debug源碼,你不僅可以瀏覽到程序執行過程中的每個類,還能查看這些類的運行狀態。這纔是閱讀源碼之道。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章