網(wǎng)站制作NEWS
如何通過(guò)閱讀源碼來(lái)學(xué)習(xí)優(yōu)秀開源框架
對(duì)于開發(fā)者來(lái)說(shuō),社區(qū)里豐富的開源代碼其實(shí)是筆極為寶貴的財(cái)富。如果能充分利用好開放源代碼的資源,不僅可以掌握多種編程方法,提高實(shí)踐能力,還能獲得好的思想,激發(fā)編程靈感。開源代碼怎么學(xué)以及怎樣才能學(xué)好是大家經(jīng)常關(guān)注的話題,日前,在問答網(wǎng)站知乎上,有人拋出了“如何更有效地學(xué)習(xí)開源項(xiàng)目的代碼?”的話題,眾技術(shù)好手各抒己見,CSDN軟件研發(fā)頻道對(duì)本文內(nèi)容進(jìn)行了整理,方便大家學(xué)習(xí)與參考。盛大創(chuàng)新研究院研究員 莊表偉:學(xué)習(xí)開源 盡可能在代碼里找答案 莊表偉提供了以下9個(gè)建議:1.在下載源代碼之后,首先要跑起來(lái),編譯通過(guò)、正常運(yùn)行;2.在你覺得最有可能運(yùn)行到的地方,設(shè)置斷點(diǎn)或者拋出異常,這樣,就能夠找到一個(gè)項(xiàng)目在正常運(yùn)行時(shí)的入口點(diǎn);3.從入口點(diǎn)所在的那個(gè)源文件開始閱讀,逐步把握整個(gè)項(xiàng)目是如何啟動(dòng)起來(lái);4.隨便改點(diǎn)代碼,看看會(huì)不會(huì)報(bào)錯(cuò),如果報(bào)錯(cuò),會(huì)從哪里報(bào)錯(cuò);5.試著把報(bào)錯(cuò)屏蔽、修復(fù)、或者繞開;6.嘗試?yán)斫庖粋€(gè)系統(tǒng)的內(nèi)部結(jié)構(gòu),多少組成部分,主線模塊是哪些?輔助模塊是哪些?7.從實(shí)際需要出發(fā),修改這個(gè)項(xiàng)目,滿足自己的某一個(gè)小的需求。(注意在此之前,盡量不要在網(wǎng)絡(luò)上找答案);8.看看相關(guān)的討論與心得,是否與自己的理解相一致;9.提交bug fix或者某個(gè)新的功能代碼。在學(xué)習(xí)開源的過(guò)程中,有幾個(gè)方面會(huì)獲得大量收獲,1.架構(gòu)與模式;2.開源社區(qū)常見的一些慣用法;3.相關(guān)領(lǐng)域的結(jié)構(gòu)與算法??偨Y(jié)一點(diǎn):學(xué)習(xí)開源,盡可能在代碼里找答案,而不是在代碼之外找答案,那些都是二手的,而且很可能不準(zhǔn)確?;ヂ?lián)網(wǎng)評(píng)論員 朱曉陽(yáng):從簡(jiǎn)單做起 理論聯(lián)系實(shí)踐朱曉陽(yáng)對(duì)此發(fā)表了兩點(diǎn)看法:首先,從簡(jiǎn)單做起。剛開始的時(shí)候?qū)W習(xí)一些領(lǐng)域內(nèi)基礎(chǔ)理論,然后找一些簡(jiǎn)單的東西去實(shí)現(xiàn),不能一開始就去找開源項(xiàng)目。建議大家經(jīng)常動(dòng)手寫一些小程序,如改進(jìn)宿舍網(wǎng)絡(luò)登錄客戶端等。積小成多,能顯著提高自己的編程能力。其次,學(xué)習(xí)的知識(shí)一定要和自己生活或工作有聯(lián)系,這樣才會(huì)有樂趣或動(dòng)力?;ヂ?lián)網(wǎng)評(píng)論員孫竟:先構(gòu)想一個(gè)想做的項(xiàng)目首先,構(gòu)想一個(gè)想做的項(xiàng)目(比如論壇、博客、微博等);然后,思考需要什么功能,應(yīng)該怎么去實(shí)現(xiàn),盡可能包括各種細(xì)節(jié),有必要時(shí)記錄下來(lái);最后,去找個(gè)類似的開源應(yīng)用,看看它是怎么實(shí)現(xiàn)的,和你的想法有什么差異,有什么可以學(xué)習(xí)或需要改進(jìn)的地方?;ヂ?lián)網(wǎng)草根hqman:我的5個(gè)建議:1.反復(fù)地使用軟件,熟釋軟件的組成文件和軟件功能,注意IE地址欄內(nèi)的地址變化;2.打開數(shù)據(jù)庫(kù)文件或存放數(shù)據(jù)的XML文件,參照數(shù)據(jù)字典了解各個(gè)表和字段的數(shù)據(jù)含意;如果沒有數(shù)據(jù)字典,就運(yùn)行軟件輸入數(shù)據(jù),參照所輸入的數(shù)據(jù),了解各個(gè)表和字段的數(shù)據(jù)含義;3.利用Visio進(jìn)行反向工程,將類圖抽出來(lái);4.研究類之間的關(guān)系,注釋各個(gè)類的屬性和方法,弄清程序的整體框架;5.另開一個(gè)項(xiàng)目,按照軟件開發(fā)的流程,將代碼分段復(fù)制進(jìn)新的項(xiàng)目,進(jìn)行編譯調(diào)試,關(guān)注一些實(shí)現(xiàn)細(xì)節(jié),學(xué)習(xí)一些編程的技巧。在讀研究生張偉:在校學(xué)生空閑時(shí)間多參加一下比賽張偉的建議是大家在空閑時(shí)間多參加一些比賽。一個(gè)完整的項(xiàng)目,不管再小,只要做完了,就會(huì)有收獲。多看一些比較大的開源項(xiàng)目源代碼,每次看完后都會(huì)受益匪淺。從網(wǎng)上成熟的開源代碼里,可以學(xué)到很多的設(shè)計(jì)思想。他認(rèn)為,從項(xiàng)目入手,以項(xiàng)目為驅(qū)動(dòng),可激勵(lì)自己進(jìn)步。當(dāng)然,是否一定需要看開源代碼,這將取決于個(gè)人的興趣和需要。畫出程序流程圖 理解程序流程思想CSDN博客專家i_like_cpp:曾在CSDN分享了《如何將源代碼學(xué)好》的博文,對(duì)此,他給出了四點(diǎn)建議:1. 畫出整個(gè)程序的流程圖,理解整個(gè)程序流程的思想。畫流程圖的方式更讓人很直接的理解程序的整體流程,而不會(huì)被代碼所干擾,讓程序員總體上把握整個(gè)程序;2. 對(duì)流程各節(jié)點(diǎn)(函數(shù)或過(guò)程)的理解,流程的每一節(jié)點(diǎn)是構(gòu)成整個(gè)流程的不可缺少的部份;3.再把流程和流程各節(jié)點(diǎn)串起來(lái)理解整個(gè)程序,可能的話最好寫出讀書筆記;4. 如果想深刻的學(xué)習(xí)到源代碼的精髓所在,請(qǐng)寫一個(gè)相近的程序進(jìn)行操練。理解了這個(gè)程序并不表明掌握了這個(gè)程序,只有在操練一個(gè)相近的程序時(shí),才知道你到底理解了多少,掌握了多少。編后語(yǔ):源代碼的學(xué)習(xí)是一個(gè)從整體到不斷細(xì)化的過(guò)程,是一個(gè)極為繁瑣的過(guò)程同時(shí)也是一個(gè)不斷認(rèn)清事物本源的過(guò)程。本文總結(jié)的源代碼的學(xué)習(xí)經(jīng)驗(yàn),希望對(duì)您有所幫助。那么,CSDN的網(wǎng)友們,你們是如何對(duì)待開源項(xiàng)目源代碼的呢?
多重隨機(jī)標(biāo)簽
漣源鋼鐵總廠職工大學(xué)靠譜嗎 有哪15種適合女性的職業(yè) 蘇引華名句 流通渠道與營(yíng)銷渠道的區(qū)別 邢臺(tái)房地產(chǎn)有哪些公司 2023亞殘運(yùn)會(huì)如何購(gòu)票 源派設(shè)計(jì)是培訓(xùn)機(jī)構(gòu)嗎 瀘州未來(lái)發(fā)展哪些地段 軟件開發(fā)的流程 章丘有沒有好點(diǎn)的職業(yè)學(xué)校 還被各種網(wǎng)站注冊(cè)是怎么回事啊 青島和運(yùn)城哪個(gè)發(fā)達(dá) 經(jīng)濟(jì)和城市建設(shè)方面 飲料設(shè)備cip清洗系統(tǒng) 招聘專員的崗位職責(zé)推薦15篇 韓子龍工作經(jīng)驗(yàn) 湖南外貿(mào)職業(yè)學(xué)院怎么樣呢 北京密云十大旅游景點(diǎn) 有哪些軟件可以看樓盤 合肥騰飛學(xué)校招生電話 文藝又新穎的三八婦女節(jié)文案 昆明的百度推廣地區(qū)怎么劃分 陽(yáng)江市第一職業(yè)高級(jí)中學(xué)靠譜嗎 茶顏悅色奶茶店加盟費(fèi)多少 陽(yáng)江市恒暉房地產(chǎn)開發(fā)有限公司怎么樣 德州項(xiàng)目有哪些 清遠(yuǎn)市長(zhǎng)實(shí)建設(shè)有限公司怎么樣 女生適合去游戲設(shè)計(jì)行業(yè)工作嗎 大慶助樂托管咋樣啊 番禺有哪些購(gòu)物中心 天津力天裝飾靠譜嗎