Posted on 2006-06-26 22:52
mahudu@cppblog 閱讀(201)
評論(0) 編輯 收藏 引用 所屬分類:
Programming
???
+++++++++++++++++
第十章:?代碼閱讀工具
+++++++++++++++++
223.詞匯工具可以高效地在一個大代碼文件中或者跨多個文件查找某種模式.
224.使用程序編輯器和正則表達式查找命令,?瀏覽龐大的源代碼文件.
225.以只讀方式瀏覽源代碼文件.
226.使用正則表達式?^function?name?可以找出函數(shù)的定義.
227.使用正則表達式的字符類,?可以查找名稱遵循特定模式的變量.
228.使用正則表達式的否定字符類,?可以避免非積極匹配.
229.使用正則表達式?symbol-1.?*symbol-2,?可以查找出現(xiàn)在同一行的符號.
230.使用編輯器的?tags?功能,?可以快速地找出實體的定義.
231.可以用特定的?tag?創(chuàng)建工具,?增加編輯器的瀏覽功能.
232.使用編輯器的大綱視圖,?可以獲得源代碼結構的鳥瞰圖.
233.使用您的編輯器來檢測源代碼中圓括號|方括號和花括號的匹配.
234.使用?grep?跨多個文件查找代碼模式.
235.使用?grep?定位符號的聲明|定義和應用.
236.當您不能精確地表述要查找的內容時,?請使用關鍵單詞的詞干對程序的源代碼進行
查找.
237.用?grep?過濾其他工具生成的輸出,?分離出您要查找的項.
238.將?grep?的輸出輸送到其他工具,?使復雜處理任務自動化.
239.通過對?grep?的輸出進行流編輯,?重用代碼查找的結果.
240.通過選取與噪音模式不匹配的輸出行(grep-v),?過濾虛假的?grep?輸出.
241.使用?fgrep?在源代碼中查找字符串列表.
242.查找注釋,?或標識符大小寫不敏感的語言編寫的代碼時,?要使用大小寫不敏感的模
式匹配(grep?-i).
243.使用?grep?–n?命令行開關,?可以創(chuàng)建與給定正則表達式匹配的文件和行號的檢查
表.
244.可以使用?diff?比較文件或程序不同版本之間的差別.
245.在運行?diff?命令時,?可以使用?diff?–b,?使文件比較算法忽略結尾的空格,?用?
–w?忽略所有空白區(qū)域的差異,?用?–i?使文件比較對大
小寫不敏感.
246.不要對創(chuàng)建自己的代碼閱讀工具心存畏懼.
247.在構建自己的代碼閱讀工具時:?要充分利用現(xiàn)代快速原型語言所提供的能力;?從簡
單開始,?根據(jù)需要逐漸改進;?使用利用代碼詞匯結構的
各種試探法;?要允許一些輸出噪音或寂靜(無關輸出或缺失輸出);?使用其他工具對輸入
進行預處理,?或者對輸出進行后期處理.
248.要使編譯器成為您的:?指定恰當級別的編譯器警告,?并小心地評估生成的結果.
249.使用C預處理器理清那些濫用預處理器特性的程序.
250.要徹底地了解編譯器如何處理特定的代碼塊,?需要查看生成的符號(匯編)代碼.
251.通過分析相應目標文件中的符號,?可以清晰地了解源文件的輸入和輸出.
252.使用源代碼瀏覽器瀏覽大型的代碼集合以及對象類型.
253.要抵制住按照您的編碼規(guī)范對外部代碼進行美化的誘惑;?不必要的編排更改會創(chuàng)建
不同的代碼,?并妨礙工作的組織.
254.優(yōu)美打印程序和編輯器語法著色可以使得程序的源代碼為易讀.
255.cdecl?程序可以將難以理解的C和C++類型聲明轉換成純英語(反之亦然).
256.實際運行程序,?往往可以更深刻地理解程序的動作.
257.系統(tǒng)調用|事件和數(shù)據(jù)包跟蹤程序可以增進對程序動作的理解.
258.執(zhí)行剖析器可以找出需要著重優(yōu)化的代碼,?驗證輸入數(shù)據(jù)的覆蓋性,?以及分析算法
的動作.
259.通過檢查從未執(zhí)行的代碼行,?可以找出測試覆蓋的弱點,?并據(jù)此修正測試數(shù)據(jù).
260.要探究程序動態(tài)動作時的每個細節(jié),?需要在調試器中運作它.
261.將您覺得難以理解的代碼打印到紙上.
262.可以繪制圖示來描繪代碼的動作.
263.可以試著向別人介紹您在閱讀的代碼,?這樣做一般會增進您對代碼的理解.
264.理解復雜的算法或巧妙的數(shù)據(jù)結構,?要選擇一個安靜的環(huán)境,?然后聚精會神地考慮
,?不要借助于任何計算機化或自動化的幫助.