日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序代码阅读技巧

發布時間:2025/6/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序代码阅读技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

程序代碼閱讀技巧

?(2012-02-16 17:33:44) 轉載
標簽:?

雜談

分類:?編程日記

一、代碼閱讀的必要性

閱讀別人的代碼作為研發人員是一件經常要做的事情。一個是學習新的編程語言的時候通過閱讀別人的代碼是個最佳的學習方法,另外是積累編程經驗。如果你有機 會閱讀一些操作系統的代碼會幫助你理解一些基本的原理。更有就是在你作為一個質量確保人員或一個小領導的時候如果你要做白盒測試的時候沒有閱讀代碼的能力 是不能完成相應的任務。最后一個就是如果你中途接手一個項目的時候或給一個項目做售后服務的時候是要有閱讀代碼的能力的。

二、收集所有可能收集的材料

閱讀代碼要做的第一件事情是收集所有和項目相關的資料。比如你要做一個項目的售后服務,那么你首先要搞明白項目做什么用的,那么調研文件、概要設計文 件、周詳設計文件、測試文件、使用手冊都是你要最先搞到手的。如果你是為了學習那么盡量收集和你的學習有關的資料,比如你想學習linux的文件系統的代 碼,那最佳要找到linux的使用手冊、及文件系統設計的方法、數據結構的說明。(這些資料在書店里都能找到)。

  材料的種類分為幾種類型

1. 基礎資料

比如你閱讀turbo c2的原始碼你要有turbo c2的函數手冊,使用手冊等專業書籍,msc 6.0或java 的話不僅要有函數手冊,還要有類庫函數手冊。這些資料都是你的基礎資料。另外你要有一些關于uml的資料能作為查詢手冊也是個不錯的選擇

2. 和程式相關的專業資料

每一個程式都是和相關行業相關的。比如我閱讀過一個關于氣象分析方面的代碼,因為里邊用到了一個復雜的數據轉換公式,所以不得不把自己的大學時候課本,找出來來復習一下高等數學的內容。如果你想閱讀linux的文件管理的代碼,那么找一本講解linux文件系統的書對你的幫助會非常大。

3. 相關項目的文件資料

這一部分的資料分為兩種,一個相關行業的資料,比如你要閱讀一個稅務系統的代碼那么有一些財務/稅務系統的專業資料和國家的相關的法律、法規的資料是 必不可少的。此外就是關于這個項目的需求分析報告、概要設計報告、周詳設計報告,使用手冊、測試報告等,盡量多收集對你以后的代碼閱讀是非常重要的。

三、知識準備

了解基礎知識,不要上來就閱讀代碼,打好基礎能做到事半功倍的效果。

四、留備份,構造可運行的環境

代碼拿到手之后的第一件事情是先做備份,最佳是刻在一個光盤上,在代碼閱讀的時候一點不動代碼是非常困難的一件事情,特別是你要做一些修改性或增強性 維護的時候。而一旦做修改就可能發生問題,到時候要恢復是經常發生的事情,如果你不能非常好的使用版本控制軟件那么先留一個備份是個最起碼的需求了。

在做完備份之后最佳給自己構造一個可運行的環境,當然可能會非常麻煩,但可運行代碼和不可運行的代碼閱讀起來難度會差非常多的。所以多用一點時間搭建 一個環境是非常值得的,而且我們閱讀代碼主要是為了修改其中的問題或做移植操作。不能運行的代碼除了能學到一些技術以外,用處有限。

五、找開始的地方

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

六、分層次閱讀

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

七、寫注解

寫注解是在閱讀代碼中最重要的一個步驟,在我們閱讀的原始碼一般來說是我們不熟悉的系統,閱讀別人的代碼一般會有幾個問題:

1. 搞明白別人的編程思想不 是一件非常容易的事情,即使你知道這段程式的思路的時候也是相同。
2. 閱讀代碼的時候代碼量一般會比較大,如果不及時寫注解,往往會造成讀明白了后邊忘了前邊的現象。
3. 閱讀代碼的時候難免會出現理解錯誤,如果沒有及時的寫注解非常難及時的發現這些錯誤。
4. 有時候不寫注解非常難確定一個函數你是否閱讀過,他的功能是什么,經常會發生重復閱讀、理解的現象。

好了,說一些寫注解的基本方法:

1. 猜測地去寫,剛開始閱讀一個代碼的時候,你非常難一下子就確定所有的函數的功能,不妨采用采用猜測的方法去寫注解, 根據函數的名字、位置寫一個大致的注解,當然一般會有錯誤,但你的注解實際是不斷調整的,直到最后你理解了全部代碼。
2. 按功能去寫,別把注解寫成語法說明書,千萬別看到fopen就寫打開文件,看到fread就寫讀數據,這樣的注解一點用處都沒有,而應該寫在此處研發參數設置文件(****.dat)讀出系統初始化參數……這樣才是有用的注解。
3. 在寫注解的使用另外要注意的一個問題是分清晰系統自動生成的代碼和用戶自己研發的代碼,一般來說沒有必要寫系統自動生成的代碼。象delphi的代碼,我們往往要自己編寫一些自己的代碼段,還要對一些系統自動生成的代碼段進行修改,這些代碼在閱讀過程是要寫注解的,但有一些沒有修改過的自動生成的代碼就沒有必要寫注解了。
4.在主要代碼段要寫較為周詳的注解。有一些函數或類在程式中起關鍵的作用,那么要寫比較周詳的注解。這樣對你理解代碼有非常大的幫助。
5. 對你理解起來比較困難的地方要寫周詳的注解,在這些地方往往會有一些編程的技巧。不理解這些編程技巧對 你以后的理解或移植會有問題。
6. 寫中文注解。如果你的英文足夠的好,不用看這條了,但非常多的人英文實在不怎么樣,那就寫中文注解吧,我們寫注解是為了加 快自己的理解速度。中文在大多數的時候比英文更適應中國人。和其寫一些誰也看不懂的英文注解還不如不寫。

八、重復閱讀

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

九、運行并修改代碼

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

分析一個源代碼,一個有效的方法是:

   1、閱讀源代碼的說明文檔,比如本例中的README, 作者寫的非常的詳細,仔細讀過之后,在閱讀程序的時候往往能夠從README文件中找到相應的說明,從而簡化了源程序的閱讀工作。

   2、如果源代碼有文檔目錄,一般為doc或者docs, 最好也在閱讀源程序之前仔細閱讀,因為這些文檔同樣起了很好的說明注釋作用。

   3、從makefile文件入手,分析源代碼的層次結構,找出哪個是主程序,哪些是函數包。這對于快速把握程序結構有很大幫助。

   4、從main函數入手,一步一步往下閱讀,遇到可以猜測出意思來的簡單的函數,可以跳過。但是一定要注意程序中使用的全局變量(如果是C程序),可以把關鍵的數據結構說明拷貝到一個文本編輯器中以便隨時查找。

   5、分析函數包(針對C程序),要注意哪些是全局函數,哪些是內部使用的函數,注意extern關鍵字。對于變量,也需要同樣注意。先分析清楚內部函數,再來分析外部函數,因為內部函數肯定是在外部函數中被調用的。

   6、需要說明的是數據結構的重要性:對于一個C程序來說,所有的函數都是在操作同一些數據,而由于沒有較好的封裝性,這些數據可能出現在程序的任何地方,被任何函數修改,所以一定要注意這些數據的定義和意義,也要注意是哪些函數在對它們進行操作,做了哪些改變。

   7、在閱讀程序的同時,最好能夠把程序存入到cvs之類的版本控制器中去,在需要的時候可以對源代碼做一些修改試驗,因為動手修改是比僅僅是閱讀要好得多的讀程序的方法。在你修改運行程序的時候,可以從cvs中把原來的代碼調出來與你改動的部分進行比較(diff命令), 可以看出一些源代碼的優缺點并且能夠實際的練習自己的編程技術。

   8、閱讀程序的同時,要注意一些小工具的使用,能夠提高速度,比如vi中的查找功能,模式匹配查找,做標記,還有grep,find這兩個最強大最常用的文本搜索工具的使用。

   對于一個Unix/Linux下面以命令行方式運行的程序,有這么一些套路,大家可以在閱讀程序的時候作為參考。

   1、在程序開頭,往往都是分析命令行,根據命令行參數對一些變量或者數組,或者結構賦值,后面的程序就是根據這些變量來進行不同的操作。

   2、分析命令行之后,進行數據準備,往往是計數器清空,結構清零等等。

   3、在程序中間有一些預編譯選項,可以在makefile中找到相應部分。

   4、注意程序中對于日志的處理,和調試選項打開的時候做的動作,這些對于調試程序有很大的幫助。

   5、注意多線程對數據的操作

總結

以上是生活随笔為你收集整理的程序代码阅读技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品熟妇一区二区三区四区 | 国产66页 | 日韩欧美一级二级 | 嫩草研究院在线 | 高潮av| 国产丝袜视频 | 日韩中文字 | 天天射日 | 一区二区视频在线 | 国产在视频线精品视频 | 五月婷婷深爱 | 国产123区在线观看 91国产一区二区 | a天堂在线视频 | 色悠悠国产 | 欧美精品一区二区视频 | 观看免费av| 日本二区视频 | 欧美性大战久久久久xxx | 国产精品久久久久久99 | 中文字幕在线播放第一页 | 蜜桃视频黄色 | 色欧美88888久久久久久影院 | 免费在线观看你懂的 | 日本精品人妻无码免费大全 | 91精品国产乱码久久久张津瑜 | 亚洲我不卡| 美女扒开腿让人桶爽原神 | 天天操天天射天天爽 | 黄色福利网站 | 亚天堂| 这里只有精品久久 | 中文字幕无码毛片免费看 | 亚洲婷婷免费 | 欧美精品在线看 | 91无打码| 精品国产二区三区 | 国产无码精品视频 | 免费在线a | 国产精品无码久久久久高潮 | 欧av在线 | 中文天堂在线资源 | 日日夜夜精品 | 日本a√在线观看 | 精品人妻无码专区视频 | 人人爽爽爽 | 亚洲一区二区精品视频 | 欧美激情视频一区二区三区不卡 | 黄色网一级片 | 国产一区精品无码 | 国产精品久久久久久免费免熟 | 手机免费在线观看av | 麻豆传媒网站 | 亚洲第一色站 | 欧美最猛性xxxxx(亚洲精品) | 亚洲性生活大片 | 激情五月婷婷综合 | 久久免费精品国产 | 激情五月综合网 | 99久久国产综合 | 亚洲国产高清国产精品 | 在线视频你懂得 | 日本一区二区三区精品 | 欧美交换 | 午夜亚洲福利在线老司机 | 久久乐视频 | 成年人网站在线免费观看 | 欧美在线视频a | 亚洲天堂精品在线观看 | 久久精品国产露脸对白 | 无码国产精品96久久久久 | 日本aa在线观看 | 亚洲自拍偷拍网站 | 一级全黄毛片 | 91嫩草网| 亚洲人成免费电影 | 亚洲美女屁股眼交8 | 国产青青在线 | 在线观看的黄网 | 精品无码一区二区三区爱欲 | 6080av| 男人的天堂影院 | 欧美激情校园春色 | 国产精品久久久久久人 | 亚洲+小说+欧美+激情+另类 | 亚洲精品国产精品乱码不66 | 性调教学院高h学校 | 亚洲激情二区 | 性色av一区二区三区四区 | 亚洲呦呦 | 久久久久久久香蕉 | 欧美人与物videos另类 | 国产精品偷伦视频免费看 | 毛片在线看片 | 国产一区在线播放 | 国产中文字幕视频 | 亚州av综合色区无码一区 | 欧美亚洲综合视频 | 国产一区二区精彩视频 | 久久91精品国产91久久小草 |