由于工作上的原因,我不得不看大量別人寫的代碼,這是一件很痛苦的事,尤其是看既少文檔注釋,又無良好命名和結構的代碼.
有本書叫Code Reading,中文譯作代碼閱讀方法與實踐, 簡單瀏覽了一遍電子文檔, 感覺還是隔靴搔癢, 對提高代碼閱讀效率并無太大的幫助. 自己感覺還是以下方法有些幫助:
1. 把對代碼閱讀的認識用筆或wiki記下來, 最好根據(jù)功能結構分類,可畫些輔助理解的框圖或思維導圖
2. 利用UML工具反向生成些類圖,包圖, 還可自己動手畫一些流程圖,時序圖和協(xié)作圖
3. 利用調(diào)試工具,通過設斷點,單步調(diào)試,設觀察哨等手段看看到底它是怎么運行的
4. 寫一些簡單的測試程序,通過斷言,日志來驗證自己的判斷
5. 如有可能,和代碼的原作者或其他維護者一起做Code Review
附Code Reading目錄, 建議重點閱讀第10章, 希望多多提高自己,積累經(jīng)驗,將來也可以寫一本關于代碼閱讀的書
第1章 導論
1.1 為什么以及如何閱讀代碼
1.2 如何閱讀本書
進階讀物
第2章 基本編程元素
2.1 一個完整的程序
2.2 函數(shù)和全局變量
2.3 while循環(huán)、條件和塊
2.4 switch語句
2.5 for循環(huán)
2.6 break和continue語句
2.7 字符和布爾型表達式
2.8 goto語句
2.9 小范圍重構
2.10 do循環(huán)和整型表達式
2.11 再論控制結構
進階讀物
第3章 高級C數(shù)據(jù)類型
3.1 指針
3.2 結構
3.3 共用體
3.4 動態(tài)內(nèi)存分配
3.5 typedef聲明
進階讀物
第4章 C數(shù)據(jù)結構
4.1 向量
4.2 矩陣和表
4.3 棧
4.4 隊列
4.5 映射
4.6 集合
4.7 鏈表
4.8 樹
4.9 圖
進階讀物
第5章 高級控制流程
5.1 遞歸
5.2 異常
5.3 并行處理
5.4 信號
5.5 非局部跳轉
5.6 宏替換
進階讀物
第6章 應對大型項目
6.1 設計與實現(xiàn)技術
6.2 項目的組織
6.3 編譯過程和制作文件
6.4 配置
6.5 修訂控制
6.6 項目的專有工具
6.7 測試
進階讀物
第7章 編碼規(guī)范和約定
7.1 文件的命名及組織
7.2 縮進
7.3 編排
7.4 命名約定
7.5 編程實踐
7.6 過程規(guī)范
進階讀物
第8章 文檔
8.1 文檔的類型
8.2 閱讀文檔
8.3 文檔存在的問題
8.4 其他文檔來源
8.5 常見的開放源碼文檔格式
進階讀物
第9章 系統(tǒng)構架
9.1 系統(tǒng)的結構
9.2 控制模型
9.3 元素封裝
9.4 構架重用
進階讀物
第10章 代碼閱讀工具
10.1 正規(guī)表達式
10.2 用編輯器瀏覽代碼
10.3 用grep搜索代碼
10.4 找出文件的差異
10.5 開發(fā)自己的工具
10.6 用編譯器來協(xié)助代碼閱讀
10.7 代碼瀏覽器和美化器
10.8 運行期間的工具
10.9 非軟件工具
可用工具和進階讀物
第11章 一個完整的例子
11.1 概況
11.2 攻堅計劃
11.3 代碼重用
11.4 測試與調(diào)試
11.5 文檔
11.6 觀察報告
附錄A 代碼概況
附錄B 閱讀代碼的格言