作為一個程序猿你必須會的技能----自學框架!


引言

 

  這篇文章主要來源於和群里猿友的聊天,有猿友問LZ該如何學習一個框架。LZ想了想,這確實是一個值得探究的問題,於是這篇博文就應運而生了。接下來LZ就和各位猿友分享一下LZ個人學習框架的一些方式和方法,或許對大部分人還是有一些啟迪作用的。

 

找到它的老家

 

  對LZ個人來說,當LZ想要學習一個框架的時候,首要做的就是找到它的老家。打開你的瀏覽器,輸入網址:www.google.com(為何不是百度?因為我們學習的框架幾乎沒有china的),然后輸入你想學習的框架,比如spring(本文以它為例,其余其實都是類似的)。

  第一個出現的一般就是它的老家,就像下面這樣。

  擦,劇情不該是這樣的,導演掐了重新來一遍啊。該死的google老是這樣。據之前LZ的某老師說,這都是度娘干的。

  好吧,甭管是誰干的,我們只管不斷F5即可,最終你會看到下面的畫面。

  bingo。畫面出來了。這就是spring的老家,我們想要研究它就從它開始吧。接下來請你默默的打開它的鏈接。是的,默默的。

 

直入正題,找例子

 

  接下來我們就要直入正題了,進入它的頁面后,你會看到這樣的導航。

  看到了嗎?看到了嗎?

  guides,LZ蹩腳的英文大概看出來它就是向導的意思,於是我們果斷進來一看究竟。進來以后,你會發現一堆向導,這里就是你的百寶箱。

  里面有各種各樣的例子供你使用。接下來你需要做的就是按照其中某一個一步一步的做下去,直到完成你的目的。比如你想做一個任務調度器,那么就果斷進入Scheduling Tasks。接下來,你就看到了這樣一個無腦學習的頁面。

  看到了嗎,你只需要ctrl+C/V就可以完成你的任務。不過這只是一個開始,因為這畢竟只是一個簡單的例子,你還需要根據你當前的需要進行一些改變。如果你需要的正是這個例子,那么就再好不過了。

  

尋找文檔

 

  通常情況下,在你完成任務的過程當中,總會遇到這樣或者那樣的問題,就算沒有遇到,如果想要學習一個框架的話,一個完整的說明文檔往往也是你需要的。在接下來的過程當中,我們的任務就是尋找文檔。這個過程往往是最困難和痛苦的,這與LZ蹩腳的英文有很大關系,所以每次找文檔都讓LZ痛苦並快樂着。

  不過這里面總有一些大概的規律,比如doc、document、documentation這樣的字樣總是那么的親切。而且我們不需要擔心一個框架沒有文檔,因為對於開發它們的人來說,我們就是客戶,就是上帝,所以他們必須要讓上帝能看懂他們寫的東西。否則的話,他們寫的東西是沒有客戶的,沒有客戶就意味着沒有創造價值,沒有創造價值就意味着可能會被炒魷魚,被炒魷魚就意味着可能會被媳婦嫌棄,被媳婦嫌棄就意味着可能會被@#¥&綠#&%¥&*

  LZ並不會把文檔看的太深入,主要就是看一些自己開發需要的東西,還有很重要的一點就是,從當中找到框架的核心實現原理。比如spring當中,IOC的相關內容就是它的核心實現原理,因為spring的所有框架(比如AOP、security等等)都是建立在IOC的基礎之上的。

 

尋找入口,跟蹤源碼

 

  這下例子也看過了,任務也完成了,文檔也有了,如果我們想要更加深入的了解一個框架,那么源碼就是必不可少的一個環節了。說起來還是得感謝JAVA的開發氛圍,幾乎所有的東西都是開源的,所以你總能找到源碼。

  標題當中提到了入口,所謂尋找入口,就是尋找一個框架的切入點。比如spring的入口就在web.xml當中的監聽器,而struts2的入口就是web.xml當中的過濾器,常用緩存的入口往往存在spring管理的緩存的定制工廠bean當中等等。

  找到入口,你就能從頭開始調試,了解整個框架初始化的過程,以及初始化后是如何工作的。在跟蹤源碼的過程中,最好結合你的例子,搞清楚你的例子是如何運行的。比如剛才的定時器調度,搞清楚spring是如何幫你進行調度的,比如執行任務的線程是如何分配的,任務的觸發是如何進行的等等。

  

找到框架的優劣勢並努力體會它

 

  說到這里,請各位猿友想象一下,當你在逛商場的時候,如果你想要買某一樣東西,一般情況下,你總會在各個品牌或者同一個品牌的不同類型之間相互比較,如果你從不這么做,請允許LZ尊稱你為“土豪”。

  如果你這么做了,請仔細的想想,你是在比較什么?

  當然是優勢和劣勢了!

  對於我們程序猿來說,框架就是一個一個的商品,而我們就是這些商品的客戶。如果你想要做一個能買到物美價廉的商品的客戶,就必須了解各個商品的優劣勢。只有了解了各個商品的優劣勢,我們才能在眾多的框架當中選擇合適的框架,你說是嗎?

  所以,不用說,我們要想了解一個框架,就必須知道它的優劣勢,尤其是劣勢。優勢一般在框架的老家當中就能找到,因為這是在為他們的項目吹牛皮呢,他們的官網自然不會忘了這一項。至於劣勢,就需要自己根據例子、源碼以及其實現原理好好體會一下了。

  

結束語

 

  框架說到底就是一個商品,我們只是其中一個用戶罷了。因此LZ不建議各位猿友把框架的研究當做畢生夢想,更不建議各位淪陷於研究各種各樣的框架,或者去嘗試各種框架的例子,並很自豪的對着鏡子說“你好厲害,你竟然會這么多框架”。注意!請你至少完成了以上幾件事,再說你會這個框架吧。

  框架只是我們針對特定場景所作出的選擇,因此我們只需要有學習框架的能力即可,千萬不要想着能把全世界所有品牌的牛奶都嘗試着喝一遍,如果你非要這么做的話,LZ保證你一定會死於非命的。這就像你買葯一樣,你只需要知道當你感冒的時候應該吃什么葯,當你拉肚子的時候應該吃什么葯就好。更好的情況是,當你萬一有其它毛病時,你也可以通過一些途徑找到適合你的葯。

  話已至此,LZ就啰嗦到這里吧。總之,深入的研究一下少數幾個優秀的框架,還是非常有益的,但不要貪多,學會適可而止即可。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM