Code Review 最佳實踐

轉(zhuǎn)載自Jim's blog

關(guān)于Code Review的重要性,我相信好的工程師都能認識到。 參考 讓Code Review稱為一種習(xí)慣 和 從Code Review談如何做技術(shù)。

同時引用一下有人對Google Code Review的描述:

The biggest thing that makes Google’s code so good is simple: code review. At Google, no code, for any product, for any project, gets checked in until it gets a positive review.

這里主要Summary 一下 如何來做Code Review. 主要參考 Code Review Best Practices,同時加上了一些自己的理解。

Code Review 主要Revivew什么

Architecture/Design

單一職責(zé)原則.
這是經(jīng)常被違背的原則。一個類只能干一個事情, 一個方法最好也只干一件事情。 比較常見的違背是一個類既干UI的事情,又干邏輯的事情, 這個在低質(zhì)量的客戶端代碼里很常見。
行為是否統(tǒng)一
比如緩存是否統(tǒng)一,錯誤處理是否統(tǒng)一, 錯誤提示是否統(tǒng)一, 彈出框是否統(tǒng)一 等等。
同一邏輯/同一行為 有沒有走同一Code Path?低質(zhì)量程序的另一個特征是,同一行為/同一邏輯,因為出現(xiàn)在不同的地方或者被不同的方式觸發(fā),沒有走同一Code Path 或者各處有一份copy的實現(xiàn), 導(dǎo)致非常難以維護。
代碼污染
代碼有沒有對其他模塊強耦合 ?
重復(fù)代碼
主要看有沒有把公用組件,可復(fù)用的代碼,函數(shù)抽取出來。
Open/Closed 原則
就是好不好擴展。 Open for extension, closed for modification.
面向接口編程 和 不是 面向?qū)崿F(xiàn)編程
主要就是看有沒有進行合適的抽象, 把一些行為抽象為接口。
健壯性
有沒有考慮線程安全性, 數(shù)據(jù)訪問的一致性
對Corner case有沒有考慮完整,邏輯是否健壯?有沒有潛在的bug?
有沒有內(nèi)存泄漏?有沒有循環(huán)依賴?(針對特定語言,比如Objective-C) ?有沒有野指針?
錯誤處理
有沒有很好的Error Handling?比如網(wǎng)絡(luò)出錯,IO出錯。
改動是不是對代碼的提升
新的改動是打補丁,讓代碼質(zhì)量繼續(xù)惡化,還是對代碼質(zhì)量做了修復(fù)?
效率/性能
關(guān)鍵算法的時間復(fù)雜度多少?有沒有可能有潛在的性能瓶頸。
客戶端程序 對頻繁消息 和較大數(shù)據(jù)等耗時操作是否處理得當(dāng)。
其中有一部分問題,比如一些設(shè)計原則, 可預(yù)見的效率問題, 開發(fā)模式一致性的問題 應(yīng)該盡早在Design Review階段解決。如果Design階段沒有解決,那至少在Code Review階段也要把它找出來。

Style

可讀性
衡量可讀性的可以有很好實踐的標(biāo)準(zhǔn),就是Reviewer能否非常容易的理解這個代碼。 如果不是,那意味著代碼的可讀性要進行改進。
命名
命名對可讀性非常重要,我傾向于函數(shù)名/方法名長一點都沒關(guān)系,必須是能自我闡述的。
英語用詞盡量準(zhǔn)確一點(哪怕有時候需要借助Google Translate,是值得的)
函數(shù)長度/類長度
函數(shù)太長的不好閱讀。 類太長了,比如超過了1000行,那你要看一下是否違反的“單一職責(zé)” 原則。
注釋
恰到好處的注釋。 但更多我看到比較差質(zhì)量的工程的一個特點是缺少注釋。
參數(shù)個數(shù)
不要太多, 一般不要超過3個。
Review Your Own Code First
跟著名的橡皮鴨調(diào)試法(Rubber Duck Debugging)一樣,每次提交前整體把自己的代碼過一遍非常有幫助,尤其是看看有沒有犯低級錯誤。
如何進行Code Review

多問問題。多問 “這塊兒是怎么工作的?” “如果有XXX case,你這個怎么處理?”
當(dāng)面討論代替Comments。 大部分情況下小組內(nèi)的同事是坐在一起的,face to face的 code review是非常有效的。
區(qū)分重點,不要舍本逐末。 優(yōu)先抓住 設(shè)計,可讀性,健壯性等重點問題。
Code Review的意識

作為一個Developer , 不僅要Deliver working code, 還要Deliver maintable code.
必要時進行重構(gòu),隨著項目的迭代,在計劃新增功能的同時,開發(fā)要主動計劃重構(gòu)的工作項。
開放的心態(tài),虛心接受大家的Review Comments。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,667評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內(nèi)容