如何學習開源框架

2021-09-30 21:23:23 字數 4076 閱讀 3927

正確的學習方法不僅能夠事半功倍,也能夠使我們更加接近真理。在大家了解了框架的本質和web開發模式之後,我們來討論一下學習開源框架和基本方法。 

在這裡,本書為大家小結了一些正確的學習方法和最佳實踐,這些不僅是筆者多年開發中的心得體會,也汲取了網路上的大家之言,希望對初學者或者正在為學習開源框架犯愁的朋友帶來一些啟示。這些學習方法,不僅適用於 struts2,同樣適用於許多其他的開源框架。 

downpour 寫道

最佳實踐閱讀、仔細閱讀、反覆閱讀每個開源框架自帶的reference。

這是學習乙個框架最為重要,也是最最開始需要做的事情。不幸的是,事實上,絕大多數程式設計師對此並不在意,並且總是以種種理由作為藉口不樂意仔細閱讀 reference。 

程式設計師的常見藉口之一:英語水平跟不上,英文文件閱讀起來太吃力。針對這樣的藉口,我們需要指出,閱讀英文文件是每個程式設計師必須具備的基本素質之一,這就和除錯程式需要耐心一樣,對乙個程式設計師來說非常重要。當然,閱讀英文文件這一基本素質是一點一滴積累培養起來的,對於那些閱讀起來實在覺得吃力的朋友,筆者的建議是結合中文的翻譯版本一起看。國內有許多開源組織,例如滿江紅的開源支持者們已經為大家精心做了許多很有價值的翻譯,例如spring、hibernate等都有對應的中文翻譯文件。但是大家必須注意,看中文文件,必須和英文文件對照,因為沒有人可以確保翻譯能夠百分之百的正確,語義的不匹配會給你帶來極大的誤導,通過對照,才能夠將誤解降低到最低。 

程式設計師的常見藉口之二:reference太長,抓不住重點。在這裡,筆者給出的建議是:耐心,耐心,還是耐心!從reference的質量而言,其實大多數的開源框架的reference都是非常優秀的,基本包含了框架的方方面面。尤其是struts2,由於歷史原因,struts2的reference基本上都是乙個乙個的專題wiki文章拼起來的文件,每篇文章都有乙個固定的主題,不僅包含原理解析、注意事項、有的還包含原始碼解析和示例講解。或許閱讀reference可能會非常枯燥,但是從價值的角度看,對reference的閱讀往往是對大家幫助最大的。因此,筆者對閱讀reference的建議是,多看幾遍第一遍,你可以採取瀏覽(scan)的方式,目的是了解框架的整體架構的大致功能。第二遍,挑重點的章節仔細閱讀,並且輔以一定的**實踐,目的是徹底掌握某個分支領域的知識。第三遍,帶著問題閱讀,在文件中尋找答案。 

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

權威性

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

正確性

自帶的reference幾乎很少犯錯,所以不會給你帶來什麼的誤導資訊。不僅如此,許多的reference已經為你總結了許多框架使用過程中的最佳實踐。所以我們沒有理由不直接通過這些reference來獲得第一手的資料。 

downpour 寫道

最佳實踐精讀網路教程。

對於很多初學者來說,他們對看reference這種學習方式的接受程度很低。相反,他們會去轉而學習一些網路教程。一般而言,這些學習材料的實際價值要比reference低很多倍。主要原因在於,作者在編寫這些教程時,多數都會加入他們自己的學習思路,而忽略了框架本身所期望達到的程式開發中最佳實踐,甚至會給很多讀者以:「程式就是這麼寫的」的誤導。 所以,對於網路上的絕大多數網路教程,需要讀者有足夠的甄別能力,否則很容易被帶入歧途。

網路上還有很多原版的教程,例如《*** in action》系列。《*** in action》系列的書籍在市場上深受好評。然而,這些系列的書籍並不比框架自帶的reference好多少,因為有些內容也帶有作者個人的感**彩。當然,每個作者在編寫書籍或撰寫教程的過程中都會夾帶自己的感**彩,這本不是什麼壞事,不過既然我們已經有了reference作為閱讀的主體了,為什麼我們要捨近求遠呢?當然,不得不說,對於這類書籍,我們需要採取的態度是「精讀」。 

同時,網友也提到了很多網路教程。網路教程,尤其是中文的網路教程,基本上都是網友的經驗之談,也有寫成系列文章的。對於網路教程,筆者的建議是:帶著問題去讀,去搜尋你的答案,而不是當作核心文件來閱讀。在找到答案之後,也需要通過實踐來反覆驗證,因為有許多的解決方案,可能只是臨時的,並不是程式開發中的最佳實踐。 

downpour 寫道

最佳實踐搭建環境執行每個開源框架自帶的sample專案。

千萬不要小看這些sample專案,我們可以從這些專案中獲取許多重要的知識和資訊。有些知識恐怕連reference都不曾提及。這些原生態的東西,使得我們完全無需捨近求遠地到網路上去到處尋找例子,只要學習這些例子,就足夠掌握開源框架的種種特性了。 

我們可以就其中的三個sample專案進行舉例分析: 

struts2-blank-2.2.1.war

一般而言,名為xx-blank-***.war的sample專案是乙個開源框架最小的乙個可執行的範例。所以,如果大家仔細學習這個war包中的內容,至少可以發現組成乙個struts2程式的最小元素到底有哪些。在其中的web-inf/lib目錄下,我們能夠找到struts2程式執行所需要依賴的jar包的最小集合(如圖2-8所示),我們還能從中學習struts2的各種基礎配置的編寫等。 

這個sample專案告訴我們在portal環境下的struts2的應用應該如何編寫。通過與struts2-blank-2.2.1.war這個專案的比較,大家可以發現,struts2在應對不同的server環境方面的不同。 

struts2-showcase-2.2.1.war

這個sample專案是struts2特性的乙個大雜燴,包含了絕大多數的struts2的特性示例。這個sample專案對於大家閱讀reference是非常有幫助的。比如說,大家在閱讀文件時看到了「檔案上傳」的章節,那麼大家就可以參考這個專案中的upload子目錄中的相關的類和配置。這相當於一邊看文件,一邊已經有乙個現成的可以執行的例子輔助你進行學習。所以,這個專案與reference的搭配是相得益彰、互為補充的,可以作為大家學習struts的最佳資源。 

downpour 寫道

最佳實踐自己寫乙個sample專案親身體驗。

這一點其實不用多說,大家也應該明白。不過筆者還是見過不少程式設計師,眼高手低,整天吹噓說這個框架的優點,那個框架的優勢,但如果讓他自己動手用這些框架寫一段程式,又變得手足無措。 

實踐是檢驗真理的唯一標準。只有自己親自動手去實踐,才能說明你真正掌握了某個技術,理解了某個框架的特性。在編寫自己的sample專案時,大家可以針對不同的特性,人為設定好業務場景(例如,使用「登入」作為乙個基本的業務場景),在實踐中不斷地重構你的**,從而領悟框架開發中的最佳實踐,提公升自己的開發水平。 

downpour 寫道

最佳實踐帶著問題除錯(debug)開源框架的原始碼。

如果大家對某個開源框架的使用已經比較熟練,對其內部的原理也基本掌握,或許你就會對其中的某些設計原理和設計思想產生興趣。這個時候,通過開源框架的原始碼來尋找問題的答案不失為乙個很好的進一步學習的途徑。 

在學習開源框架的原始碼時,筆者的建議是在程式執行在debug模式的狀態下,對原始碼進行除錯,在debug的過程中,檢視在開源框架的內部到底執行了哪些類,它們的執行次序是怎樣的以及這些類中臨時變數的執行狀態。筆者堅決反對逐個package地去閱讀原始碼,這毫無意義。因為程式本身是乙個整體,程式之所以成為程式,其本質在於它是動態的、執行的。如果我們逐一去閱讀原始碼,就相當於把乙個完整的整體進行肢體分解,那麼我們將永遠無法看到乙個完整的動態執行過程。學習原始碼,最重要的要點在於抓住乙個程式在執行過程中某一時刻某個關鍵類的執行狀態和最終狀態,而這些都能通過除錯原始碼來實現,這才是閱讀原始碼的最佳實踐。 

]

如何學習開源框架?

前短時間被人問起 如何學習開源框架 這個問題,大家是如何學習開源框架的呢?整理了下自己的思路,僅供拍磚!1 了解 先了解該開源框架在什麼背景下誕生的,主要用來解決什麼問題。做了產品經理之後遇到啥事,我都先講背景,生怕客戶聽不懂 2 熟悉 這個開源框架的原理是什麼?比如用了什麼設計模式。比如運用了反射...

如何學習開源框架

最近一段時間在學習ssh框架,學習的時候筆記是寫在紙上的,估計只有自己能看懂,最近看了 struts2技術內幕 在讀到如何學習開源框架時,感覺說的很對,很好,學習方法值得我們借鑑。如何學習開源框架 正確的學習方法不僅能夠事半功倍,也能夠使我們更加接近真理。在這裡為大家總結了一些學習方法和最佳實踐,希...

如果學習開源框架

當我們在學習乙個開源框架時,成熟的開源框架一般都會非常龐大,各個模組 包之間會有依賴關係,而如果只是修改開源包的話,始終覺得不能真正地從根本上理解 實現乙個開源框架。如果自己去模仿著寫乙個的話,也會非常痛苦,因為想實現模組a,但是寫著寫著,發現模組a依賴了太多其他模組的東西,導致無法繼續模仿下去。有...