關於code review的重要性,我相信好的工程師都能認識到。 參考 讓code review稱為一種習慣 和 從code review談如何做技術。
同時引用一下有人對google code review的描述:
the biggest thing that makes google』s code so good is ******: 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
單一職責原則.
這是經常被違背的原則。乙個類只能幹乙個事情, 乙個方法最好也只幹一件事情。 比較常見的違背是乙個類既幹ui的事情,又幹邏輯的事情, 這個在低質量的客戶端**裡很常見。
行為是否統一
比如快取是否統一,錯誤處理是否統一, 錯誤提示是否統一, 彈出框是否統一 等等。
同一邏輯/同一行為 有沒有走同一code path?低質量程式的另乙個特徵是,同一行為/同一邏輯,因為出現在不同的地方或者被不同的方式觸發,沒有走同一code path 或者各處有乙份copy的實現, 導致非常難以維護。
**汙染
**有沒有對其他模組強耦合 ?
重複**
主要看有沒有把公用元件,可復用的**,函式抽取出來。
open/closed 原則
就是好不好擴充套件。 open for extension, closed for modification.
面向介面程式設計 和 不是 面向實現程式設計
主要就是看有沒有進行合適的抽象, 把一些行為抽象為介面。
健壯性有沒有考慮執行緒安全性, 資料訪問的一致性
對corner case有沒有考慮完整,邏輯是否健壯?有沒有潛在的bug?
有沒有記憶體洩漏?有沒有迴圈依賴?(針對特定語言,比如objective-c) ?有沒有野指標?
錯誤處理
有沒有很好的error handling?比如網路出錯,io出錯。
改動是不是對**的提公升
新的改動是打補丁,讓**質量繼續惡化,還是對**質量做了修復?
效率/效能
關鍵演算法的時間複雜度多少?有沒有可能有潛在的效能瓶頸。
客戶端程式 對頻繁訊息 和較大資料等耗時操作是否處理得當。
其中有一部分問題,比如一些設計原則, 可預見的效率問題, 開發模式一致性的問題 應該盡早在design review階段解決。如果design階段沒有解決,那至少在code review階段也要把它找出來。
style
可讀性衡量可讀性的可以有很好實踐的標準,就是reviewer能否非常容易的理解這個**。 如果不是,那意味著**的可讀性要進行改進。
命名命名對可讀性非常重要,我傾向於函式名/方法名長一點都沒關係,必須是能自我闡述的。
英語用詞盡量準確一點(哪怕有時候需要借助google translate,是值得的)
函式長度/類長度
函式太長的不好閱讀。 類太長了,比如超過了1000行,那你要看一下是否違反的「單一職責」 原則。
注釋恰到好處的注釋。 但更多我看到比較差質量的工程的乙個特點是缺少注釋。
引數個數
不要太多, 一般不要超過3個。
review your own code first
跟著名的橡皮鴨除錯法(rubber duck debugging)一樣,每次提交前整體把自己的**過一遍非常有幫助,尤其是看看有沒有犯低階錯誤。
如何進行code review
多問問題。多問 「這塊兒是怎麼工作的?」 「如果有*** case,你這個怎麼處理?」
當面討論代替comments。 大部分情況下小組內的同事是坐在一起的,face to face的 code review是非常有效的。
區分重點,不要捨本逐末。 優先抓住 設計,可讀性,健壯性等重點問題。
code review的意識
作為乙個developer , 不僅要deliver working code, 還要deliver maintable code.
必要時進行重構,隨著專案的迭代,在計畫新增功能的同時,開發要主動計畫重構的工作項。
開放的心態,虛心接受大家的review comments。
Code Review最佳實踐
原文作者 kevin london 譯文出自 開發技術前線 www.devtf.cn 譯者 ayyb1988 校對者 chaossss 狀態 完成 在wiredrive上,我們做了很多的code review。在此之前我從來沒有做過,這對於我來說是乙個全新的體驗,下面來總結一下在code revie...
Code Review最佳實踐
同時引用一下有人對google code review的描述 the biggest thing that makes google s code so good is code review.at google,no code,for any product,for any project,get...
Code Review的最佳實踐
code review是開發者之間討論修改 來解決問題的過程。很多文章談論了code review的諸多好處,包括知識共享,的質量,開發者的成長,卻很少討論審查什麼 如何審查。體系結構和 設計 風格 測試審查 在提交 之前,我經常用git新增改變的檔案 資料夾,然後通過git diff 來檢視做了哪...