主頁 > 知識庫 > 編程人員閱讀代碼的一些小技巧分享

編程人員閱讀代碼的一些小技巧分享

熱門標(biāo)簽:美圖手機(jī) 銀行業(yè)務(wù) 呼叫中心市場需求 鐵路電話系統(tǒng) 智能手機(jī) 網(wǎng)站文章發(fā)布 檢查注冊表項 服務(wù)器配置
代碼閱讀的必要性
閱讀別人的代碼作為研發(fā)人員是一件經(jīng)常要做的事情。一個是學(xué)習(xí)新的編程語言的時候通過閱讀別人的代碼是個最佳的學(xué)習(xí)方法,另外是積累編程經(jīng)驗。如果你有機(jī) 會閱讀一些操作系統(tǒng)的代碼會幫助你理解一些基本的原理。更有就是在你作為一個質(zhì)量確保人員或一個小領(lǐng)導(dǎo)的時候如果你要做白盒測試的時候沒有閱讀代碼的能力 是不能完成相應(yīng)的任務(wù)。最后一個就是如果你中途接手一個項目的時候或給一個項目做售后服務(wù)的時候是要有閱讀代碼的能力的。
收集所有可能收集的材料
閱讀代碼要做的第一件事情是收集所有和項目相關(guān)的資料。比如你要做一個項目的售后服務(wù),那么你首先要搞明白項目做什么用的,那么調(diào)研文件、概要設(shè)計文 件、周詳設(shè)計文件、測試文件、使用手冊都是你要最先搞到手的。如果你是為了學(xué)習(xí)那么盡量收集和你的學(xué)習(xí)有關(guān)的資料,比如你想學(xué)習(xí)linux的文件系統(tǒng)的代 碼,那最佳要找到linux的使用手冊、及文件系統(tǒng)設(shè)計的方法、數(shù)據(jù)結(jié)構(gòu)的說明。(這些資料在書店里都能找到)。
  材料的種類分為幾種類型
1.基礎(chǔ)資料。
比如你閱讀turbo c2的原始碼你要有turbo c2的函數(shù)手冊,使用手冊等專業(yè)書籍,msc 6.0或java 的話不僅要有函數(shù)手冊,還要有類庫函數(shù)手冊。這些資料都是你的基礎(chǔ)資料。另外你要有一些關(guān)于uml的資料能作為查詢手冊也是個不錯的選擇
2.和程式相關(guān)的專業(yè)資料。
每一個程式都是和相關(guān)行業(yè)相關(guān)的。比如我閱讀過一個關(guān)于氣象分析方面的代碼,因為里邊用到了一個復(fù)雜的數(shù)據(jù)轉(zhuǎn)換公式,所以不得不把自己的大學(xué)時候課本 找出來來復(fù)習(xí)一下高等數(shù)學(xué)的內(nèi)容。如果你想閱讀linux的文件管理的代碼,那么找一本講解linux文件系統(tǒng)的書對你的幫助會非常大。
3.相關(guān)項目的文件資料
這一部分的資料分為兩種,一個相關(guān)行業(yè)的資料,比如你要閱讀一個稅務(wù)系統(tǒng)的代碼那么有一些財務(wù)/稅務(wù)系統(tǒng)的專業(yè)資料和國家的相關(guān)的法律、法規(guī)的資料是 必不可少的。此外就是關(guān)于這個項目的需求分析報告、概要設(shè)計報告、周詳設(shè)計報告,使用手冊、測試報告等,盡量多收集對你以后的代碼閱讀是非常重要的

知識準(zhǔn)備
了解基礎(chǔ)知識,不要上來就閱讀代碼,打好基礎(chǔ)能做到事半功倍的效果

留備份,構(gòu)造可運(yùn)行的環(huán)境
代碼拿到手之后的第一件事情是先做備份,最佳是刻在一個光盤上,在代碼閱讀的時候一點不動代碼是非常困難的一件事情,特別是你要做一些修改性或增強(qiáng)性 維護(hù)的時候。而一旦做修改就可能發(fā)生問題,到時候要恢復(fù)是經(jīng)常發(fā)生的事情,如果你不能非常好的使用版本控制軟件那么先留一個備份是個最起碼的需求了。
在做完備份之后最佳給自己構(gòu)造一個可運(yùn)行的環(huán)境,當(dāng)然可能會非常麻煩,但可運(yùn)行代碼和不可運(yùn)行的代碼閱讀起來難度會差非常多的。所以多用一點時間搭建 一個環(huán)境是非常值得的,而且我們閱讀代碼主要是為了修改其中的問題或做移植操作。不能運(yùn)行的代碼除了能學(xué)到一些技術(shù)以外,用處有限。

找開始的地方
做什么事情都要知道從那里開始,讀程式也不例外。在c語言里,首先要找到main()函數(shù),然后逐層去閱讀,其他的程式無論是vb、delphi都要首先找到程式頭,否則你是非常難分析清晰程式的層次關(guān)系。

分層次閱讀
在閱讀代碼的時候不要一頭就扎下去,這樣往往容易只見樹木不見森林,閱讀代碼比較好的方法有一點象二叉樹的廣度優(yōu)先的遍歷。在程式主體一般會比較簡 單,調(diào)用的函數(shù)會比較少,根據(jù)函數(shù)的名字及層次關(guān)系一般能確定每一個函數(shù)的大致用途,將你的理解作為注解寫在這些函數(shù)的邊上。當(dāng)然非常難一次就將全部注解 都寫正確,有時候甚至可能是你猜測的結(jié)果,不過沒有關(guān)系這些注解在閱讀過程是不斷修正的,直到你全部理解了代碼為止。一般來說采用逐層閱讀的方法能是你系 統(tǒng)的理解保持在一個正確的方向上。避免一下子扎入到細(xì)節(jié)的問題上。在分層次閱讀的時候要注意一個問題,就是將系統(tǒng)的函數(shù)和研發(fā)人員編寫代碼區(qū)分開。在c, c++,java ,delphi中都有自己的系統(tǒng)函數(shù),不要去閱讀這些系統(tǒng)函數(shù),除非你要學(xué)習(xí)他們的編程方法,否則只會浪費(fèi)你的時間。將系統(tǒng)函數(shù)表示出來,注明他們的作用 即可,區(qū)分系統(tǒng)函數(shù)和自編函數(shù)有幾個方法,一個是系統(tǒng)函數(shù)的編程風(fēng)格一般會比較好,而自編的函數(shù)的編程風(fēng)格一般比較會比較差。從變量名、行之間的縮進(jìn)、注 解等方面一般能分辨出來,另外一個是象ms c6++會在你編程的時候給你生成一大堆文件出來,其中有非常多文件是你用不到了,能根據(jù)文件名來區(qū)分一下時候是系統(tǒng)函數(shù),最后如果你實在確定不了,那就 用研發(fā)系統(tǒng)的幫助系統(tǒng)去查一下函數(shù)名,對一下參數(shù)等來確定即可。

寫注解
寫注解是在閱讀代碼中最重要的一個步驟,在我們閱讀的原始碼一般來說是我們不熟悉的系統(tǒng),閱讀別人的代碼一般會有幾個問題,1搞明白別人的編程思想不 是一件非常容易的事情,即使你知道這段程式的思路的時候也是相同。2閱讀代碼的時候代碼量一般會比較大,如果不及時寫注解往往會造成讀明白了后邊忘了前邊 的現(xiàn)象。3閱讀代碼的時候難免會出現(xiàn)理解錯誤,如果沒有及時的寫注解非常難及時的發(fā)現(xiàn)這些錯誤。4不寫注解有時候你發(fā)生你非常難確定一個函數(shù)你時候閱讀 過,他的功能是什么,經(jīng)常會發(fā)生重復(fù)閱讀、理解的現(xiàn)象。
好了,說一些寫注解的基本方法:1猜測的去寫,剛開始閱讀一個代碼的時候,你非常難一下子就確定所有的函數(shù)的功能,不妨采用采用猜測的方法去寫注解, 根據(jù)函數(shù)的名字、位置寫一個大致的注解,當(dāng)然一般會有錯誤,但你的注解實際是不僅調(diào)整的,直到最后你理解了全部代碼。2按功能去寫,別把注解寫成語法說明 書,千萬別看到fopen就寫打開文件,看到fread就寫讀數(shù)據(jù),這樣的注解一點用處都沒有,而應(yīng)該寫在此處研發(fā)參數(shù)設(shè)置文件(****。dat)讀出 系統(tǒng)初始化參數(shù)。。。。。,這樣才是有用的注解。3在寫注解的使用另外要注意的一個問題是分清晰系統(tǒng)自動生成的代碼和用戶自己研發(fā)的代碼,一般來說沒有必 要寫系統(tǒng)自動生成的代碼。象delphi的代碼,我們往往要自己編寫一些自己的代碼段,還要對一些系統(tǒng)自動生成的代碼段進(jìn)行修改,這些代碼在閱讀過程是要 寫注解的,但有一些沒有修改過的自動生成的代碼就沒有必要寫注解了。4在主要代碼段要寫較為周詳?shù)淖⒔?。有一些函?shù)或類在程式中起關(guān)鍵的作用,那么要寫比 較周詳?shù)淖⒔?。這樣對你理解代碼有非常大的幫助。5對你理解起來比較困難的地方要寫周詳?shù)淖⒔猓谶@些地方往往會有一些編程的技巧。不理解這些編程技巧對 你以后的理解或移植會有問題。6寫中文注解。如果你的英文足夠的好,不用看這條了,但非常多的人英文實在不怎么樣,那就寫中文注解吧,我們寫注解是為了加 快自己的理解速度。中文在大多數(shù)的時候比英文更適應(yīng)中國人。和其寫一些誰也看不懂的英文注解還不如不寫。

重復(fù)閱讀
一次就能將所有的代碼都閱讀明白的人是沒有的。至少我還沒有遇見過。反復(fù)的去閱讀同一段代碼有助于得代碼的理解。一般來說,在第一次閱讀代碼的時候你 能跳過非常多一時不明白的代碼段,只寫一些簡單的注解,在以后的重復(fù)閱讀過程用,你對代碼的理解會比上一次理解的更深刻,這樣你能修改那些注解錯誤的地方 和上一次沒有理解的對方。一般來說,對代碼閱讀3,4次基本能理解代碼的含義和作用。

運(yùn)行并修改代碼
如果你的代碼是可運(yùn)行的,那么先讓他運(yùn)行起來,用單步跟蹤的方法來閱讀代碼,會提高你的代碼速度。代碼通過看中間變量了解代碼的含義,而且對 以后的修改會提供非常大的幫助
用自己的代碼代替原有代碼,看效果,但在之前要保留原始碼
600行的一個函數(shù),閱讀起來非常困難,編程的人不是個好的習(xí)慣。在閱讀這個代碼的時候?qū)⒋a進(jìn)行修改,變成了14個函數(shù)。每一個大約是40-50 行左右。

標(biāo)簽:河南 長治 上海 沈陽 新疆 樂山 滄州 紅河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《編程人員閱讀代碼的一些小技巧分享》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266