閱讀程序的方法

原文鏈接:https://www.cnblogs.com/amanlikethis/p/3427110.html

轉自 https://www.cnblogs.com/amanlikethis/p/3427110.html

引     

     程序是設計思想的體現。程序在設計之初,設計者會有一些列的目的(設計目標),接下來纔是實現這些目的的思路(設計流程),最後纔是具體地實現。

    閱讀程序是程序員必備的技能,通過閱讀高手的程序,瞭解程序的功能,學習程序設計的技巧。比較短的程序段,比如說一千行一下的程序,通常都不復雜,很容易讀懂。但是,碰上上萬行的程序,比如說ucos-ii內核,linux 0.11內核,uboot啓動代碼,沒有一定的閱讀技巧,像無頭蒼蠅一樣的讀,顯然會四處碰壁。有些程序閱讀者,心情浮躁,這本身就是程序員的大忌。在讀海洋般的代碼時,不肯鑽進去,找很多的相關資料,大概瞭解了程序的結構和工作原理,就草草了事。似乎他們也懂了一些,但是又似乎完全不懂。調整心態是關鍵。有些程序閱讀者會犯這樣的錯誤,從程序的第一句開始讀,一腳跳入程序的太多細節中,往往發現似乎進入迷宮,出也出不來。但是,好像不去讀這些細節又不能窺見高手的程序技巧,這似乎陷入了絕境。

    我認爲閱讀大型程序必須有一定的規劃和方法,也就是說有清醒的思路,然後纔去閱讀。這就像做一道很那的數學題一樣,一開始就暈着頭去做,往往半途而廢;做這樣的題通常先要嘗試着整體分析,找到解決問題合適的途徑,最後纔是具體的細節演算。依據這種思路,我談談對閱讀複雜程序的看法。

一、閱讀程序的目的

    並不是每一個人閱讀同一個代碼的目的都是相同的,首先你要找到你閱讀這段代碼的初衷--爲什麼要閱讀這個代碼,是爲了瞭解某個功能是怎樣實現的,是爲了學習一些編程技巧,還是爲了深入理解代碼的完整運作流程,還是其他的原因。

    只有知道閱讀代碼的原因,才能進一步確定想從所讀代碼中獲得什麼,接下來纔是怎樣獲得的問題。

二、閱讀程序的順序

    通常情況下,我是認爲閱讀程序需要兩步來讀,也許根據你的需要,沒必要這麼麻煩。第一次讀,不要注意細節,而去全面把握程序要實現的目的;第二次讀,認真研究細節,去看實現這些目的的方法和技巧。只在意細節往往陷入第二段所描述的困境,最後閱讀程序將被困難中斷,而無法自拔;而只在乎目的,雖然可以把握程序的全局,但是不注意細節又很難獲得高手們的技術技巧。兩步閱讀,一步也不能少,也不能顛倒順序。

三、閱讀程序需要注意的其他方面

1、程序閱讀要加實驗環節

    在讀的過程中,有時沒有做實驗,很難知道程序的運行情況,所以必須配合實驗來研究程序的代碼,通常可以對感興趣的程序做測試,通過程序運行的現象來理解程序的奧妙(這應該算作程序的調試)。

2、注意力合理分配

    大型的程序,對於程序員有限的生命是很難讀完的,如果真這樣做了,很有可能浪費了沒必要的時間。根據閱讀的目的,把注意力集中到想獲得的內容上,而不要把注意力分散到所有程序的每一句代碼,這樣的時間和精力消耗是耗不起的。

3、有些問題放一放

    優秀的程序通常融合了高超的技術和算法,而對於讀者來說水平有限,勢必有一些代碼目前無法破解,可以放一放。有可能這一放就永遠不會再來破解,但也有可能將來的某一時刻,水平上了新的層次就可以看懂了。

強力推薦

    如果有時間最好將從高手中程序中獲得的技巧可以自己編程實現一下,可以不要求很複雜,但是要能體現所應用的技巧。不過,你實現的功能越複雜,要求越高,你的投入也會越大,收穫也是成正比的。做到“知行合一”,纔會有大的進步,實踐是認識的最終目的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章