簡單可行的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,他們如何做的?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM