歡迎光臨
每天分享高質量文章

簡單可行的code review規則

前言

曾經有一段垃圾程式碼放在我的面前,我沒有拒絕,等我真正開始接手的時候我才後悔莫及,程式員最痛苦的事莫過於此!

每當接手別人的程式碼,都有一種想重新寫一遍的感覺,等到別人再來接手你的程式碼時,同樣的感覺。。。為什麼會有這種現象存在?因為沒有Code Review

衡量程式碼質量的唯一標準就是每分鐘罵出“WTF” 的頻率。(出自Martin(Bob大叔)《程式碼整潔之道》)當你的程式碼在做 Code Review 時,審查者要是憤怒地吼道:

“What the fuck, is this shit?” “Dude, What the fuck!” 等言辭激烈的詞語時,那說明你寫的程式碼是 Bad Code,如果審查者只是漫不經心的吐出幾個:

“What the fuck?” 那說明你寫的是 Good Code。

價值

你說我的code需要review?

一些沒採取過code review樣式的資深工程師可能會有一些抵觸情緒,但放眼業界,code reveiw的好處是毋庸置疑的。

Google內部人士的一段話。

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.

1、保證專案質量、提高程式碼可讀性

2、加速個人成長、突出團隊價值

3、知識傳播與共享

4、凝聚團隊共識

5、不斷提高團隊的下限

but,良好的程式設計總是優於code review,做好設計才能減少review工作量。

內容

Code Review的內容:程式設計素養、業務邏輯、架構設計、單元測試、效能、安全

規則

master專案收回提交許可權,由QA把控,develop到qa分支merge需要qa review確認。

feature分支往develop分支提pr必須遵循的遊戲規則:

  1. 每次提交review程式碼修改行數不得超過1000行,一小時內review完(先試行,最終標的400行,Cisco開發團隊研究顯示,進行一次Code Review不要超過400行程式碼(LOC, Line of Code)。大腦一次只能有效處理這麼多資訊,超過400 行找到缺陷的能力減弱。)

  2. 至少每個週期(兩週一個開發週期)提一次review,週五早上互相喊一下,最晚提交時間週五下午2點前,週五下午的時間用來修改review程式碼

  3. 需要保證單元測試改寫到,功能點要拆分足夠細

  4. checkout feature分支後能編譯執行正常

  5. 工作日可以上午11點前提pr,需要組內指派資深工程師兩名, 至少一人review透過

  6. 提交pr兩天內需要處理完畢,打回或透過

小步迭代,理論上每週自測完成就可以提交pr merge到develop分支

Checklist

常規項

  • 程式碼能夠工作麼?它有沒有實現預期的功能,邏輯是否正確等。

  • 所有的程式碼是否簡單易懂?

  • 程式碼符合你所遵循的程式設計規範麼?這通常包括大括號的位置,變數名和函式名,行的長度,縮排,格式和註釋。

  • 是否存在多餘的或是重覆的程式碼?

  • 程式碼是否盡可能的模組化了?

  • 是否有可以被替換的全域性變數?

  • 是否有被註釋掉的程式碼?

  • 迴圈是否設定了長度和正確的終止條件?

  • 是否有可以被庫函式替代的程式碼?

  • 是否有可以刪除的日誌或除錯程式碼?

程式碼行數統計:檢視feature分支提交了多少行程式碼? (exclude)掉idl目錄 (java thrift專案)

git log –author=”shenguanpu” –since=’2019-04-22′ –pretty=tformat: –numstat “:(exclude)idl” | awk ‘{ add += $1; subs += $2; loc += $1 – $2 } END { printf “added lines: %s, removed lines: %s, total lines: %s\n”, add, subs, loc }’

added lines: 17, removed lines: 15, total lines: 2

參考文獻:

https://mp.weixin.qq.com/s/A7XlAliQL__RcpK4AzuacQ 從Code Review 談如何做技術(陳皓)

https://mp.weixin.qq.com/s/jXT1-bC7dfvzhRmh47H69g 如何寫出優雅的程式碼

https://mp.weixin.qq.com/s/n1B0wLicwQByYslz6hYwnw 你真的會Code Review嗎?

https://mp.weixin.qq.com/s/YCw7OP3RKF1EJb064IHEXg code review 有用嗎?

https://mp.weixin.qq.com/s/nWntcljELd5g98b8RFTjXg code review 那些事兒

https://mp.weixin.qq.com/s/XvSuLKADV17-uF8mZmYXnw 程式員必備的程式碼審查(Code Review)清單

https://mp.weixin.qq.com/s/6SoJP9BMRNyLMJjwSkctUw 如何高效的Code Review

https://mp.weixin.qq.com/s/sXwuMb8lQzijWTthnaeinw 論code review程式碼審查

https://mp.weixin.qq.com/s/YOhKriAtUz2VViJtJRhbBw 享用騰訊免費早餐一樣自然的做Code Review,他們如何做的?

已同步到看一看
贊(0)

分享創造快樂