Posted on 2006-06-26 22:46
mahudu@cppblog 閱讀(217)
評論(0) 編輯 收藏 引用 所屬分類:
Programming
code?reading
++++++++++++
第一章:?導(dǎo)論
++++++++++++
1.要養(yǎng)成一個(gè)習(xí)慣,?經(jīng)常花時(shí)間閱讀別人編寫的高品質(zhì)代碼.
2.要有選擇地閱讀代碼,?同時(shí),?還要有自己的目標(biāo).?您是想學(xué)習(xí)新的模式|編碼風(fēng)格|還
是滿足某些需求的方法.
3.要注意并重視代碼中特殊的非功能性需求,?這些需求也許會導(dǎo)致特殊的實(shí)現(xiàn)風(fēng)格.
4.在現(xiàn)有的代碼上工作時(shí),?請與作者和維護(hù)人員進(jìn)行必要的協(xié)調(diào),?以避免重復(fù)勞動(dòng)或產(chǎn)
生厭惡情緒.
5.請將從開放源碼軟件中得到的益處看作是一項(xiàng)貸款,?盡可能地尋找各種方式來回報(bào)開
放源碼社團(tuán).
6.多數(shù)情況下,?如果您想要了解"別人會如何完成這個(gè)功能呢?",?除了閱讀代碼以外,?沒
有更好的方法.
7.在尋找bug時(shí),?請從問題的表現(xiàn)形式到問題的根源來分析代碼.?不要沿著不相關(guān)的路徑
(誤入歧途).
8.我們要充分利用調(diào)試器|編譯器給出的警告或輸出的符號代碼|系統(tǒng)調(diào)用跟蹤器|數(shù)據(jù)庫
結(jié)構(gòu)化查詢語言的日志機(jī)制|包轉(zhuǎn)儲工具和Windows的消
息偵查程序,?定出的bug的位置.
9.對于那些大型且組織良好的系統(tǒng),?您只需要最低限度地了解它的全部功能,?就能夠?qū)?br />它做出修改.
10.當(dāng)向系統(tǒng)中增加新功能時(shí),?首先的任務(wù)就是找到實(shí)現(xiàn)類似特性的代碼,?將它作為待實(shí)
現(xiàn)功能的模板.
11.從特性的功能描述到代碼的實(shí)現(xiàn),?可以按照字符串消息,?或使用關(guān)鍵詞來搜索代碼.
12.在移植代碼或修改接口時(shí),?您可以通過編譯器直接定位出問題涉及的范圍,?從而減少
代碼閱讀的工作量.
13.進(jìn)行重構(gòu)時(shí),?您從一個(gè)能夠正常工作的系統(tǒng)開始做起,?希望確保結(jié)束時(shí)系統(tǒng)能夠正常
工作.?一套恰當(dāng)?shù)臏y試用例(test?case)可以幫助您滿
足此項(xiàng)約束.
14.閱讀代碼尋找重構(gòu)機(jī)會時(shí),?先從系統(tǒng)的構(gòu)架開始,?然后逐步細(xì)化,?能夠獲得最大的效
益.
15.代碼的可重用性是一個(gè)很誘人,?但難以理解與分離,?可以試著尋找粒度更大一些的包
,?甚至其他代碼.
16.在復(fù)查軟件系統(tǒng)時(shí),?要注意,?系統(tǒng)是由很多部分組成的,?不僅僅只是執(zhí)行語句.?還要
注意分析以下內(nèi)容:?文件和目錄結(jié)構(gòu)|生成和配置過程|
用戶界面和系統(tǒng)的文檔.
18.可以將軟件復(fù)查作為一個(gè)學(xué)習(xí)|講授|援之以手和接受幫助的機(jī)會.