讀源碼
Ⅰ 如何正確的閱讀源代碼
除了閱讀代碼以外, 沒有更好的方法. 7.在尋找bug時, 請從問題的表現形式到問題的根源來分析代碼. 不要沿著不相關的路徑(誤入歧途). 8.我們要充分利用調試器|編譯器給出的警告或輸出的符號代碼|系統調用跟蹤器|資料庫結構化查詢語言的日誌機制|包轉儲工具和Windows的消息偵查程序,
定出的bug的位置. 9.對於那些大型且組織良好的系統, 您只需要最低限度地了解它的全部功能, 就能夠對它做出修改. 10.當向系統中增加新功能時, 首先的任務就是找到實現類似特性的代碼, 將它作為待實現功能的模板. 11.從特性的功能描述到代碼的實現, 可以按照字元串消息, 或使用關鍵詞來搜索代碼. 12.在移植代碼或修改介面時, 您可以通過編譯器直接定位出問題涉及的范圍, 從而減少代碼閱讀的工作量. 13.進行重構時, 您從一個能夠正常工作的系統開始做起, 希望確保結束時系統能夠正常工作. 一套恰當的測試用例(test
case)可以幫助您滿足此項約束. 14.閱讀代碼尋找重構機會時, 先從系統的構架開始, 然後逐步細化, 能夠獲得最大的效益. 15.代碼的可重用性是一個很誘人, 但難以理解與分離, 可以試著尋找粒度更大一些的包, 甚至其他代碼. 16.在復查軟體系統時, 要注意, 系統是由很多部分組成的, 不僅僅只是執行語句. 還要注意分析以下內容:
文件和目錄結構|生成和配置過程|用戶界面和系統的文檔. 18.可以將軟體復查作為一個學習|講授|援之以手和接受幫助的機會. ++++++++++++++++++++ 第二章: 基本編程元素 ++++++++++++++++++++ 19.第一次分析一個程序時, main是一個好的起始點. 20.層疊if-else if-…-else序列可以看作是由互斥選擇項組成的選擇結構. 21.有時, 要想了解程序在某一方面的功能, 運行它可能比閱讀源代碼更為恰當. 22.在分析重要的程序時, 最好首先識別出重要的組成部分. 23.了解局部的命名約定, 利用它們來猜測變數和函數的功能用途. 24.當基於猜測修改代碼時, 您應該設計能夠驗證最初假設的過程. 這個過程可能包括用編譯器進行檢查|引入斷言|或者執行適當的測試用例. 25.理解了代碼的某一部分, 可能幫助你理解餘下的代碼. 26.解決困難的代碼要從容易的部分入手. 27.要養成遇到庫元素就去閱讀相關文檔的習慣; 這將會增強您閱讀和編寫代碼的能力. 28.代碼閱讀有許多可選擇的策略: 自底向上和自頂向下的分析|應用試探法和檢查注釋和外部文檔, 應該依據問題的需要嘗試所有這些方法. 29.for (i=0; i 30.涉及兩項不等測試(其中一項包括相等條件)的比較表達式可以看作是區間成員測試. 31.我們經常可以將表達式應用在樣本數據上, 藉以了解它的含義. 32.使用De Morgan法則簡化復雜的邏輯表達式. 33.在閱讀邏輯乘表達式時, 問題可以認為正在分析的表達式以左的表達式均為true; 在閱讀邏輯和表達式時, 類似地,
Ⅱ 如何讀懂源代碼
(1)了解對應編程語言的基本語法結構 ;
(2)多看代碼;
(3)別光看, 注意分析, 抓住主脈絡. 看的同時應該畫畫程序的流程圖, 結構圖, 抓住關鍵變數, 結構體或者類的內容, 理清關鍵數據的交換關系;
(4)嘗試修改. 定義一個新功能, 嘗試在源碼上修改. 當你嘗試更改後, 會更容易在實踐中深入的體會源碼的思想.
(5) 如果是演算法類的源碼, 那有必要先去了解演算法的基礎理論知識.
Ⅲ 如何讀源代碼
我以前,讀代碼一般是先看看程序包含哪些頭文件,接著作者又定義了哪些宏,聲明了哪些全局變數。(注意,除了頭文件幾乎每個程序都有之外,其他兩項不一定都有。)
之後看自定義函數的原型,了解它們各是負責什麼工作的(可以猜一猜)。對於具體的實現,先不看。(一般在主函數之後或其他文件里實現)
然後進入主函數,採用「逐行掃描」的閱讀方式。直到主函數結束。
最後才去看那些自定義函數的具體實現。
另外,如果程序中還有「類」的話,那我會先去看一看類的介面,就是它能提供哪些操作。具體的實現都是讀完主函數之後才看的。
當然這是我的習慣,我想各人有各自的習慣,所以僅供樓主參考,你應該有自己的習慣。
C++程序一般分為幾個文件存放。我喜歡先看一看.h頭文件里都聲明了些什麼。特別注意類的介面。然後進入主函數所在的.cpp源文件,從頭到尾「逐行掃描」。最後才去看類的介面及自定義函數是如何實現的。
Ⅳ 如何閱讀源代碼
這樣閱讀源代碼:
1、你會懂的這些代碼是什麼意思,點擊右鍵
提示:專業人士才能看懂的
Ⅳ 如何讀java源碼
最好下個編輯器,editplus,gvim之類的,我用的是gvim,當然有myeclipse之類的軟體就更好,將代碼引進去,然後從主類開始,先看一遍主類,大體知道是幹嘛的就好了,然後再細看,從上到下,當看到新類時,再轉過去看那個類,看懂了再回主類繼續,
Ⅵ 怎樣讀取源代碼
這要用到MFC類庫
1.添加頭文件 #include <afxinet.h>
2.添加代碼
CString strAddress="http://www..com";
CInternetSession mySession(NULL,0);
CHttpFile* myHttpFile=NULL;
CString strsource,strline;
myHttpFile=(CHttpFile*)mySession.OpenURL(strAddress);
while(myHttpFile->ReadString(strline))
{
strsource+=strline;
strsource+="\r\n";
}
myHttpFile->Close();
mySession.Close();
strsource存儲的就是html源代碼。
Ⅶ 如何閱讀源碼包
在Eclipse查看開發包jar源碼的方法如下:
1.選擇項目,右鍵中單擊【Properties】
2.【Java Build Path】-【Configure Build Path】-【Libraries】,在下面找到如:Guava-r09.jar包,展開它,選擇【Source attachment】,單擊右邊的【Edit…】按鈕。
3.在打開的窗口中,可選擇文件(jar\zip),目錄或工作空間中的jar文件,在這里我選擇External Folder…,選擇如E:/java project/guava即可。
4.連續單擊【OK】兩次回到Eclipse工作平台即可。
有源碼,把它加到eclipse中:
方法1:直接用壓縮軟體打開相應的jar包,然後把源碼拖進去壓縮一下,最後選中工程刷新一下ok。
方法2:右擊referenced
Ⅷ 為什麼以及如何閱讀源碼
對於這些問題,說到底主要是因為經驗不夠,而經驗主要從項目實踐中積累,所以招聘單位一般都會限定工作時間大於 3 年,因為這些人的項目經驗相對較豐富,項目中遇到的場景相對較多。
工作經驗的積累來自於年限與實踐,然而看源碼可以擴展我們的思路,這是變相增加我們經驗的不錯方法。雖然不能短時間內通過時間積累經驗,但是可以通過學習開源框架、開源項目來獲取。
另外進職場後一般都要先熟悉現有系統,如果有文檔還好,沒文檔的話就得自己去翻代碼研究。如果大家之前對閱讀源碼有經驗,那麼在研究新系統的代碼邏輯時就不會那麼費勁了。
Ⅸ 怎樣提高閱讀源代碼的效率
1、一邊閱讀代碼一邊寫注釋。這是我用過的最好的方法,對代碼理解得更深入,看一些重要代碼或者特別難懂的代碼時挺有用。更何況,注釋也是一種文檔嘛。
2、一邊閱讀代碼一邊繪制UML。這個方法適用於類之間的關系較復雜和調用層次較深的情況,我一般都是先繪制順序圖,然後為順序圖中的類繪制關系圖。
3、通過Debug來跟蹤程序的主要執行過程,這樣就可以分清主次了,閱讀的時候更有針對性。
4、類的快速閱讀。先弄清楚它在繼承鏈中的位置,看看它的內部狀態,也就是成員變數,一般來說,類的對外介面都是對成員變數的訪問、加工、代理等,然後看看它的對外介面,也就是公有成員函數,識別核心的一個或多個函數,這時候你應該可以大概了解這個類的職責或作用了。可能這個類是某個設計模式中的一個組成部分,所以,設計模式的掌握對代碼的快速閱讀也是很有幫助的。
5、帶著問題去閱讀。比如想了解android中的消息機制,那麼看看Looper、Handler、MessegeQueue這幾個類就可以了,其他的不要去看,要不然就跑題了。
Ⅹ 如何讀項目代碼
(再沒有文檔這個總是有的吧?哪怕是個代號) 2.這個項目的性質 3.源代碼的規模 有多少行(其中有多少行是注釋),總共有多少個文件(每一類文件分別有多少個,每個文件是多少行) 如果是面向對象的,有多少個class,如果是面向過程的有多少個function 4.功能的詳細整理功能列表函數名 功能 功能描述 5.功能模塊之間的關系 (哪怕沒有注釋,按名稱,調用關系一定能整理清楚) 如果你把我上面列的5點搞清楚了,再來抱怨,我想應該是下面這個樣子: 老大給了我一個項目源碼讓我看,注釋都沒有,是一個超級留言本,總共有10萬行代碼,就兩個文件,函數不到10個,功能就是注冊和留言,連修改刪除功能都沒有,大家說我看這樣的代碼有意思嗎?我是不是還要待在這里?如果你完成了我上面說的5步,你仍然覺得沒什麼值得學的,沒有什麼需要做的,說明你不適合干編程這一行。下邊呢就具體的介紹一下心得。當我們學習程序編碼時,首先會看一些程序代碼例子,然後學例子去修改編寫代碼;當我們剛進入一個公司,公司會把要維護修改的項目分給我們,讓我們修改維護,要想修改編寫,首先要讀懂項目主要程序;當我們去看一些優秀的開源項目,想從中學習這些項目的設計思想時,我們也要去看項目代碼…如此等等,可以說讀代碼是為了寫代碼,寫出非常優秀的代碼。因此對於程序開發人員來說,快速閱讀項目代碼是一個必需要掌握的能力。前段時間,我接手了一個php做的系統,公司要求我參閱這個項目重新做一個Demo,在讀這個系統代碼時,我積累了一些關於讀項目代碼的心得體會,主要內容如下。 清楚主要功能 想一想如何實現 首先要清楚項目的主要功能,知道它主要是干什麼用的,才可能從總體上去把握項目。可以通過向公司同事或其他人請教、或查閱項目需求分析文檔,概要設計文檔來快速獲得項目主要功能,如果沒有這些文檔,可以在網上搜索項目的功能,如果以上這些都沒有條件的話,那隻有把此項目運行起來,通過自己的實際操作來得到項目的主要功能了。清楚項目主要功能後,自己首先想一想,如果讓我做,該如果去實現呢,這樣能夠得到對自己來說的技術難點,讀源代碼時會更留意這些內容,效率也就提高上去了。 運行項目 找到實現主要功能的代碼 清楚主要功能以後,就可以去讀實現主要功能的代碼了,當然還需要找到這些功能是在那些文件,那些類來實現的。為了找到實現類,我們還要把項目運行起來,依據項目類型及特點,通過不同方法找到實現類代碼。把這些文件記錄下來,隨後只需重點看這些文件中的代碼,就可以了。 依據代碼的類層次關系 了解項目體系結構 通過其他一些工具把這些代碼的類圖導出來,比如(rational rose或powerdesigner的逆向工程),如果是Java項目還可以導出Javadoc。依據導出的內容,了解每一個主要實現類的大致功能,及這些類之間相互關系,這樣也就清楚了項目的類層次結構,即項目體系結構。 清楚項目主要實現技術 依據導出的類圖和對項目了解的疑點,如果是技術方面,比如自己不知道或不清楚該怎麼實現某種功能,那就趕緊參照源代碼,找到項目主要實現技術。如果對此技術不熟悉,那就快快在Bai或Google上面搜索一把,ok,一定會很多關於此技術的資料等著你去看呢,抓緊閱讀這些資料,盡快掌握此技術的內容。 調試主要實現類,從中了解實現細節 了解了項目的體系結構,並清除項目主要實現技術後,下一步就是看實現細節了。看實現細節,也是從整體到局部,從看各個方法聲明出發,在逐步看每個方法體。當然沒有必要每個方法都要去一行一行看,只需重點看與實現此類主要功能的核心方法。對某些代碼看過一兩編後,還是很迷茫的話,沒有關系,調試一把,看看它終究是有何作用。調試有很多中,最終要的是一步一步跟蹤,但是有些語言編寫的代碼很難用這種方式做,比如(javascript或applet),那就把一些重要的變數輸出出來。了解了主要功能代碼的主要方法後,可以基本上說我們已經看懂了項目的代碼,把握了項目的整體架構。 修改代碼來滿足自己需求 看懂了項目代碼,最後一步就是根據需要,來修改項目代碼,滿目我們的需要了。以上就是我在看項目代碼中的總結,當然,如果項目非常功能很少,沒有使用什麼復雜技術的話,了解體系結構和清楚項目主要實現技術就可以跳過了,根據實際,直接需要去看源代碼就可以了。