CodeReview 的方式
開 Code Review 會議
團(tuán)隊(duì)內(nèi)部會整理 Check List
團(tuán)隊(duì)內(nèi)部成員交換代碼
找出可優(yōu)化方案
多問問題职烧,例如:“這塊兒是怎么工作的扁誓?”防泵、“如果有XXX 情況,你這個(gè)怎么處理蝗敢?”
區(qū)分重點(diǎn)捷泞,優(yōu)先抓住設(shè)計(jì),可讀性寿谴,健壯性等重點(diǎn)問題
整理好的編碼實(shí)踐锁右,用來作為 Code Review 的參考
CodeReview 的內(nèi)容
[1]架構(gòu)/設(shè)計(jì)/常規(guī)?
1.單一職責(zé)原則 這是經(jīng)常被違背的原則。一個(gè)類只能干一個(gè)事情讶泰,一個(gè)方法最好也只干一件事情咏瑟。比較常見的違背是一個(gè)類既干UI的事情,又干邏輯的事情痪署,這個(gè)在低質(zhì)量的客戶端代碼里很常見?
2.行為是否統(tǒng)一码泞,例如:
????1)緩存是否統(tǒng)一
????2)錯(cuò)誤處理是否統(tǒng)一
????3)錯(cuò)誤提示是否統(tǒng)一
????4)彈出框是否統(tǒng)一
????5)……?
3.代碼污染 代碼有沒有對其他模塊強(qiáng)耦合?
4.重復(fù)代碼-->應(yīng)該抽取?
5.開閉原則?
6.面向接口編程?
7.健壯性
????1)是否考慮線程安全
????2)數(shù)據(jù)訪問是否一致性
????3)邊界處理是否完整
????4)邏輯是否健壯
????5)是否有內(nèi)存泄漏
????6)有沒有循環(huán)依賴
????7)有沒有野指針
????8)是否檢查了數(shù)組的“越界“錯(cuò)誤
????9)……?
8.錯(cuò)誤處理?
9.改動是不是對代碼的提升 新的改動是打補(bǔ)丁,讓代碼質(zhì)量繼續(xù)惡化狼犯,還是對代碼質(zhì)量做了修復(fù)?
10.效率/性能
????1)關(guān)鍵算法的時(shí)間復(fù)雜度多少余寥?有沒有可能有潛在的性能瓶頸
????2)客戶端程序?qū)︻l繁消息和較大數(shù)據(jù)等耗時(shí)操作是否處理得當(dāng)
[2]代碼風(fēng)格?
1.可讀性 衡量可讀性的可以有很好實(shí)踐的標(biāo)準(zhǔn),就是 Reviewer 能否非常容易的理解這個(gè)代碼悯森。如果不是宋舷,那意味著代碼的可讀性要進(jìn)行改進(jìn)?
2.命名?
????1)命名對可讀性非常重要?
????2)是否跟系統(tǒng)屬性命名造成沖突?
????3)英語用詞盡量準(zhǔn)確一點(diǎn),必要時(shí)可以查字典?
3.函數(shù)長度/類長度?
????1)函數(shù)太長的不好閱讀?
????2)類太長了瓢姻,檢查是否違反的 單一職責(zé) 原則?
4.注釋 恰到好處的注釋,不是注釋越多越好
5.參數(shù)個(gè)數(shù) 不要太多祝蝠,一般不要超過 3 個(gè)