盛大創新研究院研究員 庄表偉:學習開源 盡可能在代碼里找答案
庄表偉提供了以下9個建議:
1.在下載源代碼之后,首先要跑起來,編譯通過、正常運行;
2.在你覺得最有可能運行到的地方,設置斷點或者拋出異常,這樣,就能夠找到一個項目在正常運行時的入口點;
3.從入口點所在的那個源文件開始閱讀,逐步把握整個項目是如何啟動起來;
4.隨便改點代碼,看看會不會報錯,如果報錯,會從哪里報錯;
5.試着把報錯屏蔽、修復、或者繞開;
6.嘗試理解一個系統的內部結構,多少組成部分,主線模塊是哪些?輔助模塊是哪些?
7.從實際需要出發,修改這個項目,滿足自己的某一個小的需求。(注意在此之前,盡量不要在網絡上找答案);
8.看看相關的討論與心得,是否與自己的理解相一致;
9.提交bug fix或者某個新的功能代碼。
在學習開源的過程中,有幾個方面會獲得大量收獲,1.架構與模式;2.開源社區常見的一些慣用法;3.相關領域的結構與算法。
總結一點:學習開源,盡可能在代碼里找答案,而不是在代碼之外找答案,那些都是二手的,而且很可能不准確。
互聯網評論員 朱曉陽:從簡單做起 理論聯系實踐
朱曉陽對此發表了兩點看法:首先,從簡單做起。剛開始的時候學習一些領域內基礎理論,然后找一些簡單的東西去實現,不能一開始就去找開源項目。建議大家經常動手寫一些小程序,如改進宿舍網絡登錄客戶端等。積小成多,能顯著提高自己的編程能力。其次,學習的知識一定要和自己生活或工作有聯系,這樣才會有樂趣或動力。
互聯網評論員孫竟:先構想一個想做的項目
首先,構想一個想做的項目(比如論壇、博客、微博等);然后,思考需要什么功能,應該怎么去實現,盡可能包括各種細節,有必要時記錄下來;最后,去找個類似的開源應用,看看它是怎么實現的,和你的想法有什么差異,有什么可以學習或需要改進的地方。
互聯網草根hqman:我的5個建議:1.反復地使用軟件,熟釋軟件的組成文件和軟件功能,注意IE地址欄內的地址變化;2.打開數據庫文件或存放數據的XML文件,參照數據字典了解各個表和字段的數據含意;如果沒有數據字典,就運行軟件輸入數據,參照所輸入的數據,了解各個表和字段的數據含義;3.利用Visio進行反向工程,將類圖抽出來;4.研究類之間的關系,注釋各個類的屬性和方法,弄清程序的整體框架;5.另開一個項目,按照軟件開發的流程,將代碼分段復制進新的項目,進行編譯調試,關注一些實現細節,學習一些編程的技巧。
在讀研究生張偉:在校學生空閑時間多參加一下比賽
張偉的建議是大家在空閑時間多參加一些比賽。一個完整的項目,不管再小,只要做完了,就會有收獲。多看一些比較大的開源項目源代碼,每次看完后都會受益匪淺。從網上成熟的開源代碼里,可以學到很多的設計思想。他認為,從項目入手,以項目為驅動,可激勵自己進步。當然,是否一定需要看開源代碼,這將取決於個人的興趣和需要。
畫出程序流程圖 理解程序流程思想
CSDN博客專家i_like_cpp:曾在CSDN分享了《如何將源代碼學好》的博文,對此,他給出了四點建議:1. 畫出整個程序的流程圖,理解整個程序流程的思想。畫流程圖的方式更讓人很直接的理解程序的整體流程,而不會被代碼所干擾,讓程序員總體上把握整個程序;2. 對流程各節點(函數或過程)的理解,流程的每一節點是構成整個流程的不可缺少的部份;3.再把流程和流程各節點串起來理解整個程序,可能的話最好寫出讀書筆記;4. 如果想深刻的學習到源代碼的精髓所在,請寫一個相近的程序進行操練。理解了這個程序並不表明掌握了這個程序,只有在操練一個相近的程序時,才知道你到底理解了多少,掌握了多少。