西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁編程開發(fā)其它知識 → 如何精讀或泛讀別人編寫的程序源代碼?

如何精讀或泛讀別人編寫的程序源代碼?

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2013/1/7 11:22:01字體大小:A-A+

作者:西西點擊:0次評論:2次標(biāo)簽: 源代碼

  • 類型:源碼相關(guān)大。15.9M語言:中文 評分:3.6
  • 標(biāo)簽:
立即下載

讀代碼這事,先要分是精讀還是泛讀。

從學(xué)習(xí)的目的來看,一定要精讀一定量的經(jīng)典代碼。而精讀是指每行都讀懂,不看代碼腦子里就能勾畫出程序的基本結(jié)構(gòu)。

這里有個很形象的狀態(tài),精讀代碼時會滿腦子都是代碼,放不下,甚至睡覺前腦子里也是代碼。

但這一篇里主要不是關(guān)注如何精讀代碼的,而是關(guān)于如何在工作中掌握既有代碼的,等價于泛讀。

現(xiàn)存的很多系統(tǒng)往往很大,幾十萬行的可能也只算普通。

這時候一旦加入了這樣一個項目,那么如何去讀代碼?

下面說點個人體會。

讀這類代碼前,先得把規(guī)格大致弄清楚,而不能上來就讀,比如:對于應(yīng)用型程序,你要先大致整清楚它的使用方法。

如果其中有涉及到領(lǐng)域知識,比如:流程、財會等,那也最好預(yù)先有些認(rèn)識。這類東西從代碼里反推回來是不太可能的。

我個人感覺這對讀程序是個很大的障礙,你不知道編碼規(guī)則,卻去讀編碼的程序,總是會云里霧里,這時候反倒不是因為程序難,

而是因為不知道程序中所包含的專業(yè)知識。

在這一步里,最好能抽取出來幾個典型的應(yīng)用場景,這在后面有用。

一旦開始接觸代碼,那要先弄清楚代碼的基本靜態(tài)結(jié)構(gòu)。如:包構(gòu)成、類構(gòu)成等。

這里涉及一個層次問題。一下子把層次探的太深,就容易盯在細(xì)節(jié)上出不來。

有設(shè)計文檔的項目,大致上可以通過包來界定這個層次。

沒設(shè)計文檔的就可怕了,只能靠自己劃分,最好不要超過10個,超過了真記不住。

在靜態(tài)結(jié)構(gòu)這步,要弄清楚每個部分的核心職責(zé),可以簡單,最好能記住。

接下來就要用到上面的典型場景了。

要在典型場景下考察上面的靜態(tài)結(jié)構(gòu)是如何發(fā)揮作用的。

典型場景下用到的接口往往就是關(guān)鍵的接口,要整清楚,他們的定義和作用。

也要整清楚,典型場景下數(shù)據(jù)流的變遷。

這步驟算是弄清楚代碼的時序。很像UML里的Sequence圖。

但牽涉到數(shù)據(jù)的時候,一般需要對數(shù)據(jù)的規(guī)格有所了解。

接下來要關(guān)注進程、線程的結(jié)構(gòu)。比如:都是什么時候開始、什么時候結(jié)束的,在上述典型場景下都負(fù)責(zé)干什么。

上述四步(規(guī)格、靜態(tài)結(jié)構(gòu)、典型場景、進程線程)完成后,對程序的第一次泛讀完成。

檢驗標(biāo)準(zhǔn)很簡單,這時應(yīng)該能夠單靠紙筆描述出程序典型場景的Sequence圖。

干這事兒的時候,要抑制自己的求知欲,因為總是很想在調(diào)試器里通過call stack把一個功能的實現(xiàn)細(xì)節(jié)整清楚,

但至少在第一個層次里,可以先不要這樣。

第一次泛讀后,就要進入深掘的過程,針對的對象應(yīng)該是自己會負(fù)責(zé)的部分。這部分功能往往會隱藏在某個接口之下。

這時候一般來講可以放過功能型的模塊,比如:XML解析的模塊等。其他部分可以認(rèn)為是需要把之前所說的四個步驟再重復(fù)一下。

但這時候要關(guān)注細(xì)節(jié)和調(diào)用堆棧了。

不管是在那個讀代碼的層次,有兩個基本技巧總是需要的,一個是要掌握具體程序里內(nèi)嵌的Log機制,要能看Log,必要時可能還得加Log;一個是基本調(diào)試方法。

調(diào)試很難展開,《軟件調(diào)試》一書寫了1000多頁。

但只停留在設(shè)個斷點等他停下來這個層次上還是會有點欠缺的。條件斷點、多線程調(diào)試、多進程時的調(diào)試還是要知道一點的。

程序類型太多,因此估計讀程序的方法也很多。上面只是個人的一點經(jīng)驗,歡迎補充。

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(2)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)
    推薦文章

    沒有數(shù)據(jù)