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