日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
      <pre id="3yzup"><noframes id="3yzup">
        <label id="3yzup"></label>
        西西軟件下載最安全的下載網(wǎng)站、值得信賴(lài)的軟件下載站!

        首頁(yè)編程開(kāi)發(fā)其它知識(shí) → 如何精讀或泛讀別人編寫(xiě)的程序源代碼?

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

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

        作者:西西點(diǎn)擊:0次評(píng)論:2次標(biāo)簽: 源代碼

        • 類(lèi)型:源碼相關(guān)大小:15.9M語(yǔ)言:中文 評(píng)分:3.6
        • 標(biāo)簽:
        立即下載

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

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

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

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

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

        這時(shí)候一旦加入了這樣一個(gè)項(xiàng)目,那么如何去讀代碼?

        下面說(shuō)點(diǎn)個(gè)人體會(huì)。

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

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

        我個(gè)人感覺(jué)這對(duì)讀程序是個(gè)很大的障礙,你不知道編碼規(guī)則,卻去讀編碼的程序,總是會(huì)云里霧里,這時(shí)候反倒不是因?yàn)槌绦螂y,

        而是因?yàn)椴恢莱绦蛑兴膶?zhuān)業(yè)知識(shí)。

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

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

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

        有設(shè)計(jì)文檔的項(xiàng)目,大致上可以通過(guò)包來(lái)界定這個(gè)層次。

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

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

        接下來(lái)就要用到上面的典型場(chǎng)景了。

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

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

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

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

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

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

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

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

        干這事兒的時(shí)候,要抑制自己的求知欲,因?yàn)榭偸呛芟朐谡{(diào)試器里通過(guò)call stack把一個(gè)功能的實(shí)現(xiàn)細(xì)節(jié)整清楚,

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

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

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

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

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

        調(diào)試很難展開(kāi),《軟件調(diào)試》一書(shū)寫(xiě)了1000多頁(yè)。

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

        程序類(lèi)型太多,因此估計(jì)讀程序的方法也很多。上面只是個(gè)人的一點(diǎn)經(jīng)驗(yàn),歡迎補(bǔ)充。

          相關(guān)評(píng)論

          閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

          • 8 喜歡喜歡
          • 3 頂
          • 1 難過(guò)難過(guò)
          • 5 囧
          • 3 圍觀圍觀
          • 2 無(wú)聊無(wú)聊

          熱門(mén)評(píng)論

          最新評(píng)論

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

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

          沒(méi)有數(shù)據(jù)