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