Code Review

更新於 發佈於 閱讀時間約 6 分鐘

Let's do code review


我最近處理很多 Code Review 的活動,來說說自己對 Code Review 的看法。

什麼是 Code Review

可以直接去 google 打關鍵字,可以找到這樣的一段話。

Code review is a systematic process where developers review each other's code to improve quality, catch errors, and ensure adherence to coding standards before merging changes into the main codebase.

總之,Code Review 是軟體團隊為了提高程式碼品質的「你幫我看 Code ,我幫你看 Code 」的活動。

軟體設計品質

所謂的軟體設計品質我認為至少做到合法合規且符合軟體設計原則的程式碼才算達標。一份品質好的程式碼一定寫的清楚、看得明白、容易擴充與維護的樣貌。Code Review 可以擴充設計者的視野能幫助提升軟體設計品質。

要做好有品質的 Code Review 活動得花不少時間,實務上要確實執行也很困難。正常情況是 Developer 的你每天趕專案 Code 都寫不完了,要怎麼再擠出時間再幫其他人 Code Review 呢?有時被質疑為什麼同一份程式碼會需要搞到兩人一起 Double Work?(主管不是軟體背景)

只顧產出的設計,漸漸地會讓軟體品質會隨時間開始下滑,導致不同風格的程式碼穿插越來越難看懂,疊床架屋、copy-paste 的設計也導致效能越來越差,結果技術債不斷累積。等到團隊的技術債累積破表後,最後就只能走成本更高的refactor(打掉重建)會得不償失。

Code Review 的 R&R

R&R 是 Role and Responsibility ,角色與職責。Code Review 要有兩個角色互動才行,分別是 Developer 跟 Reviewer,Developer 提出 request,Reviewer 負責 review(審查)。

當 Developer 完成開發就可以提出 Merge Request 並開始邀請 Reviewers 來 Review 自己的程式碼,重點在過程中跟 Reviewer 取得回饋、討論凝聚共識決定該怎麼處理,看是要現在改還是下個版本改。

Reviewers 可以是複數的,大一點的團隊會由主管評估後指定適合的人來擔任,例如團隊內的資深軟體工程師或架構師,而小規模的軟體團隊的 Reviewer 大概率會是直屬主管。適合的 Reviewer 才能幫助 Developer 在過程中明確的指出問題或給予更好的設計建議。

Code Review 的方式

主要分實體與線上兩種。早期我都是進行實體的 Code Review,自己當 Developer 開發完後就跟 Reviewer 約時間討論,有錯誤或疑問的地方經過討論就直接改,實體 Code Review 的溝通效率很高。

現在改為線上用 gitlab 的 Code Review 為主。Developer 提交 Merge Request 時指定 Reviewers,Reviewers 就會收到郵件通知再安排時程進行 Review 活動。線上作業彈性大是優點,缺乏及時溝通效率的問題也是很明顯,也少了幾分人味。

Developer 的基本素養

Developer 的基本素養是要做好基本功!Commit code 前一定要確認自己的程式碼是 Workable(程式可以編譯且執行結果符合預期)才可以 commit;自己也要檢查是否已經照團隊要求的 coding style 寫作,變數/類別/函數名稱是否已經有良好的命名以及能幫助 Reviewers 理解程式內容的註解。

Developer 要保持 Open Mind。當你收到很多回饋的時候要感到開心,這代表你的 Reviewer 真的很盡責地在幫你 review,如果能仔細思考回饋與 Reviewer 進一步討論就會進步得很快。

Reviewer 的專業要求

要是哪天你被選為 Reviewer 一定要感到高興,代表你的專業被認可且具備可以指導他人的資格,是能獨當一面的軟體工程人員了(工具人?)。 Review 的專業就是在 Code Review 時給予有實質有建議的回饋。不需要花太多時間糾結 Coding Style, Naming Rules 這種工具用掃過就知道的基本的東西上,要把 Review 重點放在架構設計、邏輯層面與 Developer 的溝通上。

要注意別讓 Developer 的猴子跳到你身上,有些 Developer 會期待 Reviewer 直接給答案,如果遇到這種情況就可以多利用提問來引導 Developer 說出為什麼要這樣設計背後的原因,討論分析優缺點,讓 Developer 思考如何做才能有更好的設計。

結論

「時時勤拂拭,勿使惹塵埃」

我覺得六祖慧能的名言良好的體現了 Code Review 的重要性。它就是幫助你的程式碼整潔不蒙塵的雞毛禫子、持續進化的神奇魔杖。如果你還沒嘗試過 Code Review,那就趕快行動起來吧。

歡迎分享你對 Code Review 的想法。說說看實體或線上的 Code Review 你喜歡哪一種呢?


留言
avatar-img
留言分享你的想法!
avatar-img
Warren Lo的沙龍
21會員
66內容數
WarrenLo's 軟體設計武功祕笈
Warren Lo的沙龍的其他內容
2025/05/10
前幾天突然想起好多年前到泰國出差的時候,同事看到我在找垃圾桶要做垃圾分類,他突然冒出一句 「Everything’s general」。意思是你不知道怎麼分類就放進一般垃圾就對了,貌似玩笑的一句話其實隱含著軟體抽象設計的道理...
Thumbnail
2025/05/10
前幾天突然想起好多年前到泰國出差的時候,同事看到我在找垃圾桶要做垃圾分類,他突然冒出一句 「Everything’s general」。意思是你不知道怎麼分類就放進一般垃圾就對了,貌似玩笑的一句話其實隱含著軟體抽象設計的道理...
Thumbnail
2024/09/25
當我們從事軟體開發工作一段時間後,有些人會開始接觸軟體架構設計。由於每個軟體架構設計者的對問題的理解與知識經驗差異會導出不同的設計架構。近期與同事的軟體設計案例經驗交流後,就很希望自己剛開始學習軟體架構設計的時候就有人能用實際的軟體架構設計經驗來帶我入門...
Thumbnail
2024/09/25
當我們從事軟體開發工作一段時間後,有些人會開始接觸軟體架構設計。由於每個軟體架構設計者的對問題的理解與知識經驗差異會導出不同的設計架構。近期與同事的軟體設計案例經驗交流後,就很希望自己剛開始學習軟體架構設計的時候就有人能用實際的軟體架構設計經驗來帶我入門...
Thumbnail
2024/07/02
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
2024/07/02
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
本書大多數的內容都以 OO 的概念出發,詳列了許多設計的臭味道,也有大量的例子。個人雖然不會這樣寫程式,但仍是覺得受益良多,至少在 code review 時能更清楚知道該怎麼描述問題。不過,即便不是用 OO 的概念,有些章節還是可以帶來一些想法,用 OO 概念寫程式的人更不該錯過這本好書。
Thumbnail
本書大多數的內容都以 OO 的概念出發,詳列了許多設計的臭味道,也有大量的例子。個人雖然不會這樣寫程式,但仍是覺得受益良多,至少在 code review 時能更清楚知道該怎麼描述問題。不過,即便不是用 OO 的概念,有些章節還是可以帶來一些想法,用 OO 概念寫程式的人更不該錯過這本好書。
Thumbnail
本文主要在討論以 Docs as Code 方法來撰寫技術文件,此做法能否滿足企業內部對知識管理的需求。
Thumbnail
本文主要在討論以 Docs as Code 方法來撰寫技術文件,此做法能否滿足企業內部對知識管理的需求。
Thumbnail
Creative Coding 作品變化概念,有或沒有的差別,隨機性,色彩模式的調整...等
Thumbnail
Creative Coding 作品變化概念,有或沒有的差別,隨機性,色彩模式的調整...等
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
系統的分析與規劃 在談到程式設計時,首要的是進行系統的分析與規劃。程式設計的起點通常是系統分析與規劃,這涉及到如何分析和設計系統的大原則和方向。為了達到預期效果,重要的是擁有對產業的清晰邏輯認識和深入了解。 進行深入了解 若要進行系統分析,必須對企業的設計和程式設計的對象進行深入了解,以充分理
Thumbnail
系統的分析與規劃 在談到程式設計時,首要的是進行系統的分析與規劃。程式設計的起點通常是系統分析與規劃,這涉及到如何分析和設計系統的大原則和方向。為了達到預期效果,重要的是擁有對產業的清晰邏輯認識和深入了解。 進行深入了解 若要進行系統分析,必須對企業的設計和程式設計的對象進行深入了解,以充分理
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News