如何學(xué)習(xí)開源框架_第1頁
如何學(xué)習(xí)開源框架_第2頁
如何學(xué)習(xí)開源框架_第3頁
如何學(xué)習(xí)開源框架_第4頁
如何學(xué)習(xí)開源框架_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精品文檔2.6如何學(xué)習(xí)開源框架正確的學(xué)習(xí)方法不僅能夠事半功倍,也能夠使我們更加接近真理。在大家了解了框架的本質(zhì)和web開發(fā)模式之后,我們來討論一下學(xué)習(xí)開源框架和基本方法。在這里,本書為大家小結(jié)了一些正確的學(xué)習(xí)方法和最佳實(shí)踐,這些不僅是筆者多年開發(fā)中的心得體會(huì),也汲取了網(wǎng)絡(luò)上的大家之言,希望對初學(xué)者或者正在為學(xué)習(xí)開源框架犯愁的朋友 帶來一些啟示。這些學(xué)習(xí)方法,不僅適用于 struts2 ,同樣適用于許多其他的開源框架。downpour 寫道最佳實(shí)踐 閱讀、仔細(xì)閱讀、反復(fù)閱讀每個(gè)開源框架自帶的reference這是學(xué)習(xí)一個(gè)框架最為重要,也是最最開始需要做的事情。不幸的是, 事實(shí)上,絕大多數(shù)程 序員

2、對此并不在意,并且總是以種種理由作為借口不樂意仔細(xì)閱讀reference 。程序員的常見借口之一:英語水平跟不上,英文文檔閱讀起來太吃力。針對這樣的借口,我們需要指出,閱讀英文文檔是每個(gè)程序員必須具備的基本素質(zhì)之一,這就和調(diào)試程序需要耐心一樣,對一個(gè)程序員來說非常重要。當(dāng)然,閱讀英文文檔這一基本素質(zhì)是一點(diǎn)一滴積累培養(yǎng)起來的,對于那些閱讀起來實(shí)在覺得吃力的朋友,筆者的建議是結(jié)合中文的翻譯版本一起看。國內(nèi)有許多開源組織,例如滿江紅的開源支持者們已經(jīng)為大家精心做了許多很有價(jià)值的翻譯,例如spring、hibernate等都有對應(yīng)的中文翻譯文檔。但是大家必須注意,看中文文檔,必須和英文文檔對照,因?yàn)闆]

3、有人可以確保翻譯能夠百分之百的正確,語義的不匹配會(huì)給你帶來極大的誤導(dǎo),通過對照,才能夠?qū)⒄`解降低到最低。程序員的常見借口之二:reference太長,抓不住重點(diǎn)。在這里,筆者給出的建議是: 耐心,耐心,還是耐心!從reference的質(zhì)量而言,其實(shí)大多數(shù)的開源框架的reference都是非常優(yōu)秀的,基本包含了框架的方方面面。尤其是struts2 ,由于歷史原因,struts2的reference基本上都是一個(gè)一個(gè)的專題wiki文章拼起來的文檔,每篇文章都有一個(gè)固定的主題,不僅包含原理解析、注意事項(xiàng)、有的還包含源碼解析和示例講解。或許閱讀reference可能會(huì)非??菰?,但是從價(jià)值的角度看,對r

4、eference的閱讀往往是對大家?guī)椭畲蟮?。因此?筆者對閱讀reference的建議是,多看幾遍。第一遍,你可以采取瀏覽(scan)的方式,目的是 了解框架的整體架構(gòu)的大致功能。第二遍,挑重點(diǎn)的章節(jié)仔細(xì)閱讀,并且輔以一定的代碼實(shí)踐,目的是徹底掌握某個(gè)分支領(lǐng)域的知識。第三遍,帶著問題閱讀,在文檔中尋找答案。筆者之所以強(qiáng)烈推薦大家仔細(xì)閱讀開源框架自帶的reference,主要基于以下的兩個(gè)原因:權(quán)威性這些自帶的reference多數(shù)出自這些開源框架的作者或者開發(fā)人員之手。還有誰能夠比他們自己更了解他們自己編寫的產(chǎn)品呢?自己寫的程序,到底有哪些優(yōu)點(diǎn),如何使用,自己肯定是最最清楚的,所以要說到權(quán)威

5、性,不可能有任何的文檔比自帶的reference更加權(quán)威。正確性自帶的reference幾乎很少犯錯(cuò),所以不會(huì)給你帶來什么的誤導(dǎo)信息。不僅如此,許多的 reference已經(jīng)為你總結(jié)了許多框架使用過程中的最佳實(shí)踐。所以我們沒有理由不直接通過這些reference來獲得第一手的資料。downpour 寫道最佳實(shí)踐精讀網(wǎng)絡(luò)教程。對于很多初學(xué)者來說,他們對看reference這種學(xué)習(xí)方式的接受程度很低。相反,他們會(huì)去轉(zhuǎn)而學(xué)習(xí)一些網(wǎng)絡(luò)教程。一般而言,這些學(xué)習(xí)材料的實(shí)際價(jià)值要比reference低很多倍。主要原因在于,作者在編寫這些教程時(shí), 多數(shù)都會(huì)加入他們自己的學(xué)習(xí)思路,而忽略了框架本身所期望達(dá)到的程

6、序開發(fā)中最佳實(shí)踐,甚至?xí)o很多讀者以:程序就是這么寫的”的誤導(dǎo)。所以,對于網(wǎng)絡(luò)上的絕大多數(shù)網(wǎng)絡(luò)教程,需要讀者有足夠的甄別能力,否則很容易被帶入歧途。網(wǎng)絡(luò)上還有很多原版的教程,例如 xxx in action 系列。xxx in action 系列的書籍 在市場上深受好評。 然而,這些系列的書籍并不比框架自帶的reference好多少,因?yàn)橛行﹥?nèi)容也帶有作者個(gè)人的感情色彩。當(dāng)然,每個(gè)作者在編寫書籍或撰寫教程的過程中都會(huì)夾帶自己的感情色彩,這本不是什么壞事,不過既然我們已經(jīng)有了 reference作為閱讀的主體了, 為什么我們要舍近求遠(yuǎn)呢?當(dāng)然,不得不說,對于這類書籍,我們需要采取的態(tài)度是 精讀”

7、。同時(shí),網(wǎng)友也提到了很多網(wǎng)絡(luò)教程。網(wǎng)絡(luò)教程,尤其是中文的網(wǎng)絡(luò)教程,基本上都是網(wǎng)友的經(jīng)驗(yàn)之談,也有寫成系列文章的。對于網(wǎng)絡(luò)教程,筆者的建議是:帶著問題去讀,去搜索你的答案,而不是當(dāng)作核心文檔來閱讀。在找到答案之后,也需要通過實(shí)踐來反復(fù)驗(yàn)證,因?yàn)橛性S多的解決方案,可能只是臨時(shí)的,并不是程序開發(fā)中的最佳實(shí)踐。downpour 寫道最佳實(shí)踐 搭建環(huán)境運(yùn)行每個(gè)開源框架自帶的sample項(xiàng)目。每個(gè)開源框架基本上都會(huì)自帶有sample項(xiàng)目。以struts2為例,在struts2的分發(fā)包的apps目錄下就有多個(gè)sample項(xiàng)目,如圖2-9所示。ptru石wet-:file!咫ljscnjtse-ftabcad

8、er-e.s, l.warwaf fite3.7kjk3或 rutssiporth-2 -2 j .叫?war file6,961 kdctrutf1 .vvirwar fil11.101 ke5歡在下載struts2 是一個(gè)典型的 web層框架,所以所有 struts2 的sample項(xiàng)目都以war包的形式給 出,大家可以將這些 war包的任何一個(gè)復(fù)制到你的 web容器的運(yùn)行目錄下,啟動(dòng)web器就 可以訪問這些sample項(xiàng)目。千萬不要小看這些 sample項(xiàng)目,我們可以從這些項(xiàng)目中獲取許多重要的知識和信息。有些 知識恐怕連reference都不曾提及。這些原生態(tài)的東西,使得我們完全無需舍近

9、求遠(yuǎn)地到網(wǎng) 絡(luò)上去到處尋找例子,只要學(xué)習(xí)這些例子,就足夠掌握開源框架的種種特性了。我們可以就其中的三個(gè) sample項(xiàng)目進(jìn)行舉例分析: struts2-blank-2.2.1.war一般而言,名為xx-blank-xxx.war 的sample項(xiàng)目是一個(gè)開源框架最小的一個(gè)可運(yùn)行的范例。所以,如果大家仔細(xì)學(xué)習(xí)這個(gè)war包中的內(nèi)容,至少可以發(fā)現(xiàn)組成一個(gè)struts2程序的最小元素到底有哪些。在其中的 web-inf/lib目錄下,我們能夠找到struts2程序運(yùn)行所需要 依賴的jar包的最小集合(如圖2-8所示),我們還能從中學(xué)習(xí) struts2的各種基礎(chǔ)配置的 編寫等。commns-fileus

10、ldad-l .z. 1 .are:secutable jai rile57 kboorl-3.d.iarbo cut able jai filemm on 與-kh. 32 jar executable jar fie96 ke-t struts2-core-22.1.kari 上,| executable jar frfe| 755 kb汽 free madder-2.3.16. jar 1 exkltable jar file c61kbi 、xvwrkrcore-2.2.1 kjar ek-icu table jar file| 99e kbjatvassist-s.y.fla.ja

11、exboutable jar rie 532 kbstruts2-portlet-2.2.1.war這個(gè)sample項(xiàng)目告訴我們在portal環(huán)境下的struts2的應(yīng)用應(yīng)該如何編寫。通過與 struts2-blank-2.2.1.war這個(gè)項(xiàng)目的比較,大家可以發(fā)現(xiàn),struts2 在應(yīng)對不同的 server環(huán)境方面的不同。struts2-showcase-2.2.1.war這個(gè)sample項(xiàng)目是struts2 特性的一個(gè)大雜炫,包含了絕大多數(shù)的struts2的特性示例。這個(gè)sample項(xiàng)目對于大家閱讀 reference是非常有幫助的。比如說,大家在閱讀文檔時(shí)看 到了文件上傳”的章節(jié),那么大

12、家就可以參考這個(gè)項(xiàng)目中的upload子目錄中的相關(guān)的類和配置。這相當(dāng)于一邊看文檔,一邊已經(jīng)有一個(gè)現(xiàn)成的可以運(yùn)行的例子輔助你進(jìn)行學(xué)習(xí)。所以,這個(gè)項(xiàng)目與reference的搭配是相得益彰、互為補(bǔ)充的,可以作為大家學(xué)習(xí)struts的最佳資源。downpour 寫道最佳實(shí)踐自己寫一個(gè)sample項(xiàng)目親身體驗(yàn)。這一點(diǎn)其實(shí)不用多說,大家也應(yīng)該明白。不過筆者還是見過不少程序員,眼高手低,整天吹噓說這個(gè)框架的優(yōu)點(diǎn), 那個(gè)框架的優(yōu)勢,但如果讓他自己動(dòng)手用這些框架寫一段程序,又變得手足無措。實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。只有自己親自動(dòng)手去實(shí)踐,才能說明你真正掌握了某個(gè)技術(shù),理解了某個(gè)框架的特性。在編寫自己的sampl

13、e項(xiàng)目時(shí),大家可以針對不同的特性,人為設(shè)置好業(yè)務(wù)場景(例如,使用 登錄”作為一個(gè)基本的業(yè)務(wù)場景),在實(shí)踐中不斷地重構(gòu)你的代 碼,從而領(lǐng)悟框架開發(fā)中的最佳實(shí)踐,提升自己的開發(fā)水平。downpour 寫道最佳實(shí)踐 帶著問題調(diào)試(debug)開源框架的源碼。如果大家對某個(gè)開源框架的使用已經(jīng)比較熟練,對其內(nèi)部的原理也基本掌握,或許你就會(huì)對其中的某些設(shè)計(jì)原理和設(shè)計(jì)思想產(chǎn)生興趣。這個(gè)時(shí)候,通過開源框架的源碼來尋找問題的答案不失為一個(gè)很好的進(jìn)一步學(xué)習(xí)的途徑。在學(xué)習(xí)開源框架的源碼時(shí),筆者的建議是在程序運(yùn)行在 debug模式的狀態(tài)下,對源碼進(jìn)行調(diào) 試,在debug的過程中,查看在開源框架的內(nèi)部到底運(yùn)行了哪些類,它們的執(zhí)行次序是怎樣的以及這些類中臨時(shí)變量的執(zhí)行狀態(tài)。筆者堅(jiān)決反

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論