㈠ 如何去閱讀並學習一些優秀的開源框架的源碼
對於開發者來說,社區里豐富的開源代碼其實是筆極為寶貴的財富。如果能充分利用好開放源代碼的資源,不僅可以掌握多種編程方法,提高實踐能力,還能獲得好的思想,激發編程靈感。開源代碼怎麼學以及怎樣才能學好是大家經常關注的話題,日前,在問答網站知乎上,有人拋出了「如何更有效地學習開源項目的代碼?」的話題,眾技術好手各抒己見,CSDN軟體研發頻道對本文內容進行了整理,方便大家學習與參考。盛大創新研究院研究員 庄表偉:學習開源 盡可能在代碼里找答案 庄表偉提供了以下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. 如果想深刻的學習到源代碼的精髓所在,請寫一個相近的程序進行操練。理解了這個程序並不表明掌握了這個程序,只有在操練一個相近的程序時,才知道你到底理解了多少,掌握了多少。編後語:源代碼的學習是一個從整體到不斷細化的過程,是一個極為繁瑣的過程同時也是一個不斷認清事物本源的過程。
㈡ 關於閱讀開源項目的源碼,有哪些經驗值得分享
閱讀源代碼的過程中,最重要的一點是反復地重復。ttserver來源只是解讀台詞時,我將不熟悉C,有很多奇怪的代碼ttserver習慣,所以硬著頭皮vim線看它一遍又一遍,有些不明白的地方,看到十幾次,真正理解,可能被視為量變引起質變。
所以我一直認為,寫一篇文章,你可以毫無問題地閱讀和理解,這是一個好主意。
㈢ 如何看項目代碼
問題一:剛進項目組,怎麼看代碼? 20分 先將做好的這部分項目打開操作一遍,一定要先熟悉這個項目的業務流程,否則不知道他們原來為什麼這樣寫代碼。在操作項目的時候,你也可以想想,如果是你來做這個項目,你會怎麼做,然後再看看他們是怎麼實現的。演示項目的時候可以通過鏈接地址找到相應模塊的源代碼文件。作為過來人,我只能告訴你,熟悉業務流程是最重要的。
問題二:如何讀項目代碼 (再沒有文檔這個總是有的吧?哪怕是個代號)2.這個項目的性質3.源代碼的規模有多少行(其中有多少行是注釋),總共有多少個文件(每一類文件分別有多少個,每個文件是多少行)如果是面向對象的,有多少個class,如果是面向過程的有多少個function4.功能的詳細整理功能列表函數名 功能 功能描述5.功能模塊之間的關系(哪怕沒有注釋,按名稱,調用關系一定能整理清楚)如果你把我上面列的5點搞清楚了,再來抱怨,我想應該是下面這個樣子:老大給了我一個項目源碼讓我看,注釋都沒有,是一個超級留言本,總共有10萬行代碼,就兩個文件,函數不到10個,功能就是注冊和留言,連修改刪除功能都沒有,大家說我看這樣的代碼有意思嗎?我是不是還要待在這里?如果你完成了我上面說的5步,你仍然覺得沒什麼值得學的,沒有什麼需要做的,說明你不適合干編程這一行。下邊呢就具體的介紹一下心得。當我們學習程序編碼時,首先會看一些程序代碼例子,然後學例子去修改編寫代碼;當我們剛進入一個公司,公司會把要維護修改的項目分給我們,讓我們修改維護,要想修改編寫,首先要讀懂項目主要程序;當我們去看一些優秀的開源項目,想從中學習這些項目的設計思想時,我們也要去看項目代碼…如此等等,可以說讀代碼是為了寫代碼,寫出非常優秀的代碼。因此對於程序開發人員來說,快速閱讀項目代碼是一個必需要掌握的能力。前段時間,我接手了一個php做的系統,公司要求我參閱這個項目重新做一個Demo,在讀這個系統代碼時,我積累了一些關於讀項目代碼的心得體會,主要內容如下。 清楚主要功能 想一想如何實現 首先要清楚項目的主要功能,知道它主要是干什麼用的,才可能從總體上去把握項目。可以通過向公司同事或其他人請教、或查閱項目需求分析文檔,概要設計文檔來快速獲得項目主要功能,如果沒有這些文檔,可以在網上搜索項目的功能,如果以上這些都沒有條件的話,那隻有把此項目運行起來,通過自己的實際操作來得到項目的主要功能了。清楚項目主要功能後,自己首先想一想,如果讓我做,該如果去實現呢,這樣能夠得到對自己來說的技術難點,讀源代碼時會更留意這些內容,效率也就提高上去了。 運行項目 找到實現主要功能的代碼 清楚主要功能以後,就可以去讀實現主要功能的代碼了,當然還需要找到這些功能是在那些文件,那些類來實現的。為了找到實現類,我們還要把項目運行起來,依據項目類型及特點,通過不同方法找到實現類代碼。把這些文件記錄下來,隨後只需重點看這些文件中的代碼,就可以了。 依據代碼的類層次關系 了解項目體系結構 通過其他一些工具把這些代碼的類圖導出來,比如(rational rose或powerdesigner的逆向工程),如果是java項目還可以導出Javadoc。依據導出的內容,了解每一個主要實現類的大致功能,及這些類之間相互關系,這樣也就清楚了項目的類層次結構,即項目體系結構。 清楚項目主要實現技術 依據導出的類圖和對項目了解的疑點,如果是技術方面,比如自己不知道或不清楚該怎麼實現某種功能,那就趕緊參照源代碼,找到項目主要實現技術。如果對此技術不熟悉,那就快快在Bai或Google上面搜索一把,ok,一定會很多關於此技術的資料等著你去看呢,抓緊閱讀這些資料,盡快掌握此技術的內容。 調試主要實現類,從中了解實現細節 了解了項目的體系結構,並清除項目主要實現技術後,下一步就是看實現細節了。看實現細節,也是從整體到局部,從看各個方法聲明出發,在逐步看每個方法體。當然沒有必要每個方法都要去一行一行看,只需重點看與實現此類主要功能的核心方法。對某些代碼看過一兩編後......>>
問題三:如何看一個java web 項目代碼 首先把項目跑起來,根據自己想看的功能跟下去。
比如現在我想看商品添加的功能模塊,在頁面找到添加的按鈕,找到後台請求地址,比如請求地址是localhost/sun/proct/add.do
然後再找到該java web的攔截是什麼做的,如果是原生的servlet就直接在.java類中通過search找到這個實現了該註解的並繼承了Servlet的類
如果是用spring mvc實現攔截的就找實現了spring標準的攔截位置
如果是struts等等根據該框架的標准找到後台控制層代碼
我這里全部是講的mvc模式。
如果是那種沒使用mvc開發模式的,那你就可以不用看了,沒有看的價值。因為過 了一個月他自己也看不懂自己的代碼邏輯。
找到了控制層代碼,那麼一切就迎刃而解了 ,該打斷點打斷點,該跟代碼的跟代碼。。
後台資料庫事物那種,就暫且不提了,懂的人一點就通,不懂的我解釋也解釋不清楚
問題四:C#。。如何查看項目代碼? 從你觸發的事件開始,比如頁面上有一個button按鈕,點擊後觸發該按鈕事件,如果點擊超鏈接,就分析鏈接的頁面,如果頁面上有內置的控制項,看控制項設置了哪些屬性,不過高手寫的代碼都不用去設置控制項屬性的,都是在後台代碼中寫,你直接在前台頁面按F7查看後台代碼,可以設置斷點單步調試,可以清晰的分析出程序每一步做什麼,謝謝,這是我個人心得。
問題五:java中怎麼在整個項目里查找代碼 這個就要看開發工具了,這個不是java,是開發工具里設置的MyEclipse是ctrl+h
問題六:如何閱讀一個大型項目代碼 對於程序員來說,寫代碼永遠比讀代碼來的舒服。但現實情況是,程序員常常需要閱讀其他人員寫的代碼,更多的時候這些代碼可能即沒文檔也沒注釋。不過,好象有個人說過一句話,代碼之前,了無秘密。運用適當的策略可以讓閱讀工作變的輕松很多。1. 對於常用的系統函數進行追蹤。比如ReadFile,CreateDevice,CreateWindow,在這些函數處放幾斷點,可以看到代碼的調用過程。通過這種方式可以方便地把代碼分為底層代碼和上層邏輯代碼。2.依據項目依賴關系進行閱讀。項目的依賴關系同時表明了項目的復雜程度。對於大型的項目通常都會分割成若乾子項目,根據項目的依賴關系,循序漸進的方式可以讓閱讀變的簡單。3.對於以lib形式提供的子項目。在閱讀時,可以先把lib的整個項目做為黑盒使用。根據_declspec(dllexport)或者以頭文件方式提供的調用介面,可以減少對於細節的閱讀時間。根據模塊進行大致的劃分,可以有效地對項目的結構有直接的感性認識。4.識別項目中使用的設計模式。對於大型項目來說,設計模式是必不可少的。在龐大的代碼中識別設計模式,尋找代碼中使用相似手法的代碼結構可以極大簡化需要閱讀的代碼。5.根據數據流程分析。動態職責劃分。6.修改部分代碼,進行調試。修改部分常數或者饒過某些程序執行流程,或者以簡化的數據對程序進行追蹤。
問題七:怎樣看一個SSH項目的項目代碼? 1.首先你得啟動,看登錄流程,再找一個功能點,針對增刪改查實現的技術
2.上面主要針對請求的發送響應、連接資料庫等;然後就是看前台頁面展示如何去後台數據,用到了哪些ext、或是easyUI技術
3.以上2點主要針對有任務了能快速上手;學習項目技術就得看啟動時,配置文件怎麼寫的,xml文件的配置:事物、定時器、連接池、監聽器、webservice介面等
4.最後就是項目業務流程了
問題八:如何快速看懂別人的代碼 我看了兩年,才達到看一個一個準的境界。這是一個過程。慢慢來吧。
問題九:分類匯總結果如何同時顯示項目代碼和項目名稱 利用分類匯總功能試試。應該能滿足你的要求。
具體操作:單元格選定在標題行的任一單元格如何。數據---分類匯總----分類欄位,選生產部---匯總方式,選求和---選定匯總項,選你要求和的數據列標題---確定。
問題十:如何查看一個包的源代碼 查看Eclipse中導入包的源碼:1、項目中的Web App Libraries選項2、然後找到剛導入的jar包,並3、雙擊其中的一個Class文件4、點Attach Source..按鈕,在彈出窗口中選第二項External location5、點右面的External File,選擇源文件所在路徑,選編碼格式,一般默認GBK,點OK以後雙擊這個包下面的class文件,就能直接看到源碼了:
㈣ 如何讀項目代碼
(再沒有文檔這個總是有的吧?哪怕是個代號) 2.這個項目的性質 3.源代碼的規模 有多少行(其中有多少行是注釋),總共有多少個文件(每一類文件分別有多少個,每個文件是多少行) 如果是面向對象的,有多少個class,如果是面向過程的有多少個function 4.功能的詳細整理功能列表函數名 功能 功能描述 5.功能模塊之間的關系 (哪怕沒有注釋,按名稱,調用關系一定能整理清楚) 如果你把我上面列的5點搞清楚了,再來抱怨,我想應該是下面這個樣子: 老大給了我一個項目源碼讓我看,注釋都沒有,是一個超級留言本,總共有10萬行代碼,就兩個文件,函數不到10個,功能就是注冊和留言,連修改刪除功能都沒有,大家說我看這樣的代碼有意思嗎?我是不是還要待在這里?如果你完成了我上面說的5步,你仍然覺得沒什麼值得學的,沒有什麼需要做的,說明你不適合干編程這一行。下邊呢就具體的介紹一下心得。當我們學習程序編碼時,首先會看一些程序代碼例子,然後學例子去修改編寫代碼;當我們剛進入一個公司,公司會把要維護修改的項目分給我們,讓我們修改維護,要想修改編寫,首先要讀懂項目主要程序;當我們去看一些優秀的開源項目,想從中學習這些項目的設計思想時,我們也要去看項目代碼…如此等等,可以說讀代碼是為了寫代碼,寫出非常優秀的代碼。因此對於程序開發人員來說,快速閱讀項目代碼是一個必需要掌握的能力。前段時間,我接手了一個php做的系統,公司要求我參閱這個項目重新做一個Demo,在讀這個系統代碼時,我積累了一些關於讀項目代碼的心得體會,主要內容如下。 清楚主要功能 想一想如何實現 首先要清楚項目的主要功能,知道它主要是干什麼用的,才可能從總體上去把握項目。可以通過向公司同事或其他人請教、或查閱項目需求分析文檔,概要設計文檔來快速獲得項目主要功能,如果沒有這些文檔,可以在網上搜索項目的功能,如果以上這些都沒有條件的話,那隻有把此項目運行起來,通過自己的實際操作來得到項目的主要功能了。清楚項目主要功能後,自己首先想一想,如果讓我做,該如果去實現呢,這樣能夠得到對自己來說的技術難點,讀源代碼時會更留意這些內容,效率也就提高上去了。 運行項目 找到實現主要功能的代碼 清楚主要功能以後,就可以去讀實現主要功能的代碼了,當然還需要找到這些功能是在那些文件,那些類來實現的。為了找到實現類,我們還要把項目運行起來,依據項目類型及特點,通過不同方法找到實現類代碼。把這些文件記錄下來,隨後只需重點看這些文件中的代碼,就可以了。 依據代碼的類層次關系 了解項目體系結構 通過其他一些工具把這些代碼的類圖導出來,比如(rational rose或powerdesigner的逆向工程),如果是Java項目還可以導出Javadoc。依據導出的內容,了解每一個主要實現類的大致功能,及這些類之間相互關系,這樣也就清楚了項目的類層次結構,即項目體系結構。 清楚項目主要實現技術 依據導出的類圖和對項目了解的疑點,如果是技術方面,比如自己不知道或不清楚該怎麼實現某種功能,那就趕緊參照源代碼,找到項目主要實現技術。如果對此技術不熟悉,那就快快在Bai或Google上面搜索一把,ok,一定會很多關於此技術的資料等著你去看呢,抓緊閱讀這些資料,盡快掌握此技術的內容。 調試主要實現類,從中了解實現細節 了解了項目的體系結構,並清除項目主要實現技術後,下一步就是看實現細節了。看實現細節,也是從整體到局部,從看各個方法聲明出發,在逐步看每個方法體。當然沒有必要每個方法都要去一行一行看,只需重點看與實現此類主要功能的核心方法。對某些代碼看過一兩編後,還是很迷茫的話,沒有關系,調試一把,看看它終究是有何作用。調試有很多中,最終要的是一步一步跟蹤,但是有些語言編寫的代碼很難用這種方式做,比如(javascript或applet),那就把一些重要的變數輸出出來。了解了主要功能代碼的主要方法後,可以基本上說我們已經看懂了項目的代碼,把握了項目的整體架構。 修改代碼來滿足自己需求 看懂了項目代碼,最後一步就是根據需要,來修改項目代碼,滿目我們的需要了。以上就是我在看項目代碼中的總結,當然,如果項目非常功能很少,沒有使用什麼復雜技術的話,了解體系結構和清楚項目主要實現技術就可以跳過了,根據實際,直接需要去看源代碼就可以了。
㈤ 如何快速讀懂項目源碼javaWeb
一:學會如何讀一個JavaWeb項目源代碼 步驟:表結構->web.xml->mvc->db->spring
ioc->log-> 代碼
1、先了解項目資料庫的表結構,這個方面是最容易忘記 的,有時候我們只顧著看每一個方法是怎麼進行的,卻沒
有去了解資料庫之間的主外鍵關聯。其實如果先了解數據 庫表結構,再去看一個方法的實現會更加容易。
2、然後需要過一遍web.xml,知道項目中用到了什麼攔
截器,監聽器,過濾器,擁有哪些配置文件。如果是攔截 器,一般負責過濾請求,進行AOP 等;如果是監 可能是定時任務,初始化任務;配置文件有如使用了 spring
後的讀取mvc 相關,db 相關,service 相關,aop 相關的文件。
3、查看攔截器,監聽器代碼,知道攔截了什麼請求,這
個類完成了怎樣的工作。有的人就是因為缺少了這一步, 自己寫了一個action,配置文件也沒有寫錯,但是卻怎麼
調試也無法進入這個action,直到別人告訴他,請求被攔
4、接下來,看配置文件,首先一定是mvc相關的,如 springmvc
中,要請求哪些請求是靜態資源,使用了哪些 view 策略,controller 註解放在哪個包下等。 然後是db 相關配置文件,看使用了什麼資料庫,使用了
什麼orm框架,是否開啟了二級緩存,使用哪種產品作 為二級緩存,事務管理的處理,需要掃描的實體類放在什 么位置。最後是spring 核心的ioc
功能相關的配置文件, 知道介面與具體類的注入大致是怎樣的。當然還有一些如 apectj 置文件,也是在這個步驟中完成
5、log
相關文件,日誌的各個級別是如何處理的,在哪些 地方使用了log 記錄日誌
6、從上面幾點後知道了整個開源項目的整體框架,閱讀 每個方法就不再那麼難了。
7、當然如果有項目配套的開發文檔也是要閱讀的。