常飄在天上的代碼評審Code Review
細究成因可能是來源于兩個方面:
一是時間壓力太大。
軟件開發(fā)里可以安全打折扣的地方其實不多,文檔不寫很容易被看出來,代碼不寫程序就動都不動了。
沒辦法下,很多時候就只好拿Code Review開刀。
畢竟Code Review里少看兩眼,多看兩眼,用多少心思看,其實是個良心賬,外人看不出來的。
同時,Code Review本身也確實是個費時間的活。
另一種成因是看不見成效。
如果把CodeReview只等價為坐在一起看代碼,那么很可能Code Review中確實無法取得實效,這樣做來做去,大家也就疲了,覺得這是個浪費時間的事情。
這點和上一點有點關(guān)聯(lián),一旦時間緊,就要求編碼快;編碼快,對具體某一個人而言,不理解的部分就變多;再加上無法預(yù)留充足的Code Review時間。
那么,除了作者外,參加Review的人對看的代碼很可能是不懂的。不懂的話,也就只能糊弄,隨便找點問題搪塞下。
從這個角度看,追求高生產(chǎn)率應(yīng)該是錯誤的,生產(chǎn)率本身應(yīng)該是個區(qū)間:低于某一值的是磨洋工,高于某一值的則是質(zhì)量換速度。
畢竟人力有時窮盡。
單就項目時間壓力這一點而言,通常并不能在項目自身范圍內(nèi)解決,牽涉的也比較多,暫且不論。
看不見成效這點卻可以想點辦法來改善。
改善的一個主要手段是要明確“不看什么”和“看什么”。
需要注意的是,大多時候“定義不看的”很可能比“定義需要看的”還關(guān)鍵。
當(dāng)然這里的前提是“時間壓力下,盡可能獲取成果。”如果一個項目有的是時間,那就不妨把每行都找?guī)讉€人仔細看看。
我個人感覺,CodeReview中,***個不要干的事是“和測試搶飯碗。”
用CodeReview來檢測基本功能的實現(xiàn)是否正確這一行為本身不能講完全錯誤,但至少是低效的。
從產(chǎn)品角度看,CodeReview應(yīng)該和其它手段形成一定互補,而非是盡可能的重疊。
第二個不要干的事情是和“和靜態(tài)測試搶飯碗”。
但凡可以依賴靜態(tài)測試得出的結(jié)論的事情,在CodeReview中應(yīng)該被忽略,比如:函數(shù)復(fù)雜度等。
這樣CodeReview中應(yīng)該干的事就變的清楚些了。
測試很難覆蓋的區(qū)域,如:多線程同步,極端條件的處理等。
邏輯是否清晰,如:基本結(jié)構(gòu)和設(shè)計的偏差,全局變量的使用是否合適等。
靜態(tài)測試無法覆蓋的編碼風(fēng)格。編碼規(guī)則中東西盡可能自動分析,但總有些東西無法自動檢查,比如異常使用的是否合適等。
這類東西也只能在CodeReview中覆蓋了。
在CodeReview中,我傾向與做減法而不是加法,這樣想的一個關(guān)鍵前提就是,項目的時間似乎總是不夠,
這時候就只能讓CodeReview,靜態(tài)測試,單元測試這些職能進行互補,而不能讓他們盡可能重疊。
原文鏈接:http://www.cnblogs.com/daoshi/archive/2012/09/03/2668175.html
【編輯推薦】
- 淺談DOM文檔對象模型基礎(chǔ)
- 宅男程序員給老婆的計算機課程之10:做,就對了!
- 程序員談編碼質(zhì)量與命名
- 最喜歡與最討厭的編程語言
- HTML DOM與XML DOM的區(qū)別與聯(lián)系探究