"沒(méi)有經(jīng)驗(yàn)的技術(shù)差底子薄的初級(jí)程序員,如何閱讀項(xiàng)目源碼? "
"有人閱讀過(guò) mybatis 的源碼嗎 ?就看一個(gè)初始化過(guò)程就看的已經(jīng)頭暈眼花了,小伙伴們支支招吧!"
"源碼應(yīng)該怎么閱讀,我曾經(jīng)嘗試閱讀一些源碼,例如alibaba的druid中sqlparser部分,spring-mvc,但是發(fā)現(xiàn)很吃力,都說(shuō)debug是最好的閱讀方式,我在debug時(shí)經(jīng)常有跟丟的現(xiàn)象……就是走著走著感覺(jué)好像進(jìn)入了一些我當(dāng)前不太關(guān)注細(xì)枝末節(jié)。 "
。。。。。。
估計(jì)很多人都有這樣的疑惑。
我非常能理解小伙伴們的痛苦,因?yàn)槲乙彩沁@么痛苦著走過(guò)來(lái)的。
閱讀優(yōu)秀源碼的好處想必大家都知道,學(xué)習(xí)別人優(yōu)秀的設(shè)計(jì),合理的抽象,簡(jiǎn)潔的代碼...... 總之是好處多多。
但是真的把龐大的代碼放到你的面前,就如同一個(gè)巨大的迷宮,要在其中東轉(zhuǎn)西轉(zhuǎn)尋出一條路來(lái),把迷宮的整個(gè)結(jié)構(gòu)搞清楚,理解核心思想,真心不容易。
在閱讀由面向?qū)ο蟮恼Z(yǔ)言如Java寫(xiě)的代碼時(shí),會(huì)發(fā)現(xiàn)接口和具體的實(shí)現(xiàn)經(jīng)常對(duì)應(yīng)不起來(lái),不太清楚一個(gè)功能到底是怎么在哪個(gè)實(shí)現(xiàn)類(lèi)中才能找到。 不像C語(yǔ)言,就是函數(shù)調(diào)用函數(shù),相對(duì)還好點(diǎn)。
如果是動(dòng)態(tài)語(yǔ)言如Ruby,Python, 一個(gè)變量的類(lèi)型甚至都不容易知道,閱讀的難度大大增加。
還有一個(gè)重要的原因,現(xiàn)在我們看到的源碼基本上都經(jīng)過(guò)若干年發(fā)展、經(jīng)過(guò)很多人不斷地完善的,枝枝蔓蔓非常多,魔鬼都在細(xì)節(jié)中。 閱讀的時(shí)候很容易陷進(jìn)去, 看了幾十層函數(shù)調(diào)用以后,就徹底懵了,就放棄了: 甭管你把源碼吹得天花亂墜, 老子再也不看了。
我不是什么資深程序猿,但還是想稍微分享一下經(jīng)驗(yàn)吧。
差不多就是醬紫啦
如果你在看GCC源碼的話(huà),當(dāng)我沒(méi)說(shuō)。
我瞄過(guò)一眼GCC源碼,甚至妄圖把它們clone下來(lái)。
技不如人,甘拜下風(fēng)。
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專(zhuān)業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。