程式碼對於工程師來説,就像是自己的小孩一樣,要時常的關心它,如果不怎麽做很容易導致長歪。
當程式碼還只是自己維護的情況下,掌控肯定很高,畢竟只有自己在開發而已,但是當是一個團隊在開發的時候,怎麽掌控或者知道走向就變的很重要。
這也就是Code Review的主要目的,這篇來看一下爲什麽要做code Review,Code Review要看什麽,以及有什麽工具可以協助這一件事情。
Code Review是什麽?
當我們在寫文章的時候,會請專門人員來校稿一樣,Code Review是一樣的概念。
當程式碼針對某一個功能/問題修正了之後,請另外一位工程師協助看看程式碼是否有任何問題,這就是Code Review。
Code Review有什麽好處,應該做嗎?
執行Code Review有一些好處:
- 團隊凝聚力更高
由於當有任何修改要上的時候,會請其他工程師互相review程式碼,因此大家更清楚程式碼走向。
換句話説,凝聚力會更加的高,因爲彼此知道修改了什麽。
- 知識共享
要達成一個功能有很多種不同的寫法,但是很有可能有些寫法比較簡潔,或者更優化,這個時候透過review可以讓工程師知道這個事情。
舉例來説,開發一定有自己的框架,很有可能某些功能框架已經有提供,但是另外一個使用者不知道。
透過review告訴他,那麽不止程式碼更一致,未來也更清楚知道怎麽寫更好。
因此,達到了知識共享的目的。
- 程式碼的一致性更高
每個人有不同的開發習慣,但是團隊一定會有制定整個團隊的習慣。
透過Code Review可以互相提醒,讓整體程式碼一致性更好。
從上面幾個好處,可以發現到,code review真的是一個可以讓團隊以及程式碼更加好的一個流程。這個也可以從Stack Overflow 2019的問卷調查看的出來:
但是他的壞處是什麽?
Code Review的壞處是什麽?
好處不可能都全占,那麽如果今天要在團隊做Code Review的壞處是什麽?
很簡單,就是需要花時間。換句話説,會增加團隊的開發成本。
因爲開發完了,要請另外一個工程師來看,那麽那個工程師看的過程就是一個額外需要花時間的地方。
那到底會花多少時間呢?
同樣是Stack Overflow 2019 的報告,這項調查詢問每一個禮拜平均在Code Review花的時間:
從上面可以看到,大約3/4的人每一個星期至少需要花不超過5小時的時間來做code review。
以我自己的經歷來説,我至少每一個禮拜需要花至少6個小時在Code Review這件事情 - 甚至有可能更多。
不過個人覺得這個時間是值得的。
Code Review要看什麽?
如果說,團隊覺得Code Review是值得投資的一件事情,那麽,下一個問題就是,Code Review到底要看什麽?
第一個想到的可能是,看看功能是否有運作正常,例如是否有修復好bug或者有把功能開發正確。但是實際上Code Review一般不是用來找defect。
有研究指出15%的code review是找到可能的bug,但是實際上50%相關的comment都是和程式碼的可維護性(maintainability)有關係。
Code Review怎麽加速?
知道Code Review在看什麽之後,爲了減少Code Review要花的時間,那麽怎麽樣能夠讓Code Review花的時間減少呢?
- Reviewer要知道修改的目的是什麽
首先,如果Reviewer對於要Review的功能不清楚,那麽花的時間就會比較久。
因此,每一個修改對應的Ticket裡面的DoD (Definition of Done)寫的好不好很重要。
- 使用好的工具 - Pull Request
在Review的過程一定會需要針對某段程式碼進行comment,然後原開發者經過修改之後,會有新的update。
這些部分好的工具應該可以讓Reviewer容易做到,而Pull Request就是這麽一個好用的工具。
下一篇會有詳細介紹pull request- 每一次Review只要包含一個功能
這個和git裡面提到的原則一樣,每一個commit只應該有一個相關的修改。
同樣道理,要review的每一段,都應該只有一個相關修改。
在之後的篇幅將會介紹,如果包含多個修改,爲什麽會導致review要更花時間。
結語
這篇介紹了,什麽是Code Review,Code Review的好處/壞處,以及如果要做Code Review要看什麽以及如何加速。
如果看完了這篇,決定想要在公司開始code review這件事情,那麽有個好工具可以讓您上天堂。
在下一篇(何爲Pull Request並且如何建立 - 以Azure DevOps爲例)將來介紹工具的部分,也就是所謂的Pull Request。
看看什麽是PUll Request,怎麽建立,並且使用在Code Review。
參考資料
- 微軟關於Code Review這件事在看什麽
- Code reviews are not (primarily) for finding bugs