閱讀程式的方法

2021-09-26 05:07:59 字數 1663 閱讀 1367

** 

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

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

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

一、閱讀程式的目的

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

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

二、閱讀程式的順序

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

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

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

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

2、注意力合理分配

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

3、有些問題放一放

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

強力推薦

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

閱讀程式(6)

all right reserved.檔名稱 test.cpp 作 者 韓雙志 完成日期 2016年6月20日 版本號 v1.0 問題描述 輸入描述 輸出描述 include include include include include using namespace std int main c...

補充閱讀程式 4

03.檔名稱 text.cpp 05.完成日期 2016年5月9日 06.版本號 vc 6.0 07.includeusing namespace std class a class b public a class b virtual public a class c public a class...

STL閱讀程式 6

問題及 檔名稱 text.cpp 完成日期 2016年6月9日 版本號 codeblocks 問題描述 輸入描述 程式輸出 include include include include include using namespace std class myadd public binary fu...