網頁開發雜記
Yourator CTO
前端工程師
# INTRO
# INTRO
# INTRO
# INTRO
平均耗時數日,大範圍變更需要更久
找出問題的比例僅佔 14%
# INTRO
# INTRO
技術執行面
Code Review 本身的進行
知識交流面
Reviewer 跟開發者交流、相關知識的傳遞
整體開發面
從整個開發流程的其他地方來幫助 Code Review 更順暢進行
# CODE REVIEW
同步
非同步
# 技術執行面
# 技術執行面
# 技術執行面
# 技術執行面
# 技術執行面
形式 | 特點 | 適用場景 | 優點 | 缺點 |
---|---|---|---|---|
Pair Programming | 兩名開發者同步合作,一人寫扣、一人審查和提供建議 | - 複雜功能開發 - 高風險代碼的實作 - 新人培訓 |
- 即時反饋,快速解決問題 - 減少缺陷 - 促進知識共享 |
- 需要雙人同步時間- 對時間和人力要求高 |
Live Review | 同步進行的審查,Reviewer 和開發者即時交流並討論細節 | - 緊急變更需要快速確認 - 複雜,需要深入討論 - 新人指導 |
- 即時互動,減少溝通成本 - 適合高複雜度的問題 - 提高團隊信任 |
- 可能導致討論發散- 占用多人同步時間 |
Code Review Meeting | 團隊集體參與,針對關鍵程式碼進行深入討論 | - 重大架構或設計變更 - 高風險功能 - 團隊知識共享 |
- 多方視角,檢查更全面 - 促進團隊學習 - 提高設計透明度 |
- 時間成本高- 不適合日常小型變更 |
PR Review | 非同步的審查,通過工具(如 GitHub/GitLab)查看變更並留下評論 | - 日常開發的變更審查 - 遠端或跨時區團隊 |
- 時間靈活 - 有審查記錄可供日後查閱 - 可結合自動化 / AI 工具提升效率 |
- 缺乏即時互動,易造成溝通不暢 - 複雜變更需要花更多時間理解 |
Code Walkthrough | 同步進行,開發者逐步解說邏輯和設計,Reviewer 提出問題和建議 | - 新人指導 - 複雜程式碼的學習 - 熟悉系統未知區塊 - 團隊知識共享 |
- 有助於新人成長 - 幫助團隊理解系統的複雜邏輯 - 促進開發者反思自己的程式 |
- 偏重於知識傳遞,審查效率不如其他形式 |
# 技術執行面
緊急
不緊急
複雜
簡單
Pair
Programming
Live Review
Code Review
Meeting
PR Review
Code
Walkthrough
對自己有信心一點
直接佈署
# 技術執行面
# 技術執行面
# 知識交流面
in a successful code review submission the author is sure that his peers understand and approve the change.
一個成功的程式碼審查,開發者確信他的同儕理解並認可這些修改。
用最有效率的方式來獲取資訊
討論過程中的重要資訊記得整理與記錄
# 知識交流面
同步 > 非同步
面對面 > 線上
正面語氣 > 負面
在 code 上可以連結到的文件紀錄
# 知識交流面
# 知識交流面
數據
負面語氣的審查:57% 被認為有效
正面或中立語氣:80% 被認為有效
# 知識交流面
vs
# 知識交流面
# 知識交流面
# 知識交流面
# 開發流程面
Code Review
clear spec
# 開發流程面
# 開發流程面
Ask a programmer to review 10 lines of code, he'll find 10 issues.
Ask him to do 500 lines and he'll say it looks good.
功能規劃階段把規格、相關文件理清
把需求拆成半天可以完成的小任務
任務相關性拉出來
依據相關性實作,一個任務一個 PR
關鍵字: Stacked PR
目標: LOC < 500
# 開發流程面
# 開發流程面
交付 Code Review 之前
先自行 Review 一次
可以透過 AI Coding Tool 幫忙 Review
I want you to performing a code review, ensure the following checklist is satisfied:
1. **Meets functional requirements**: Verify that the code implements all required features and satisfies the intended use cases.
2. **Correct implementation logic and simplicity**: Ensure the logic is correct, concise, and free of unnecessary complexity.
3. **Proper synchronization and error handling**: Confirm that the code correctly handles concurrency and errors, avoiding potential deadlocks or unhandled exceptions.
4. **Security**: Check for common vulnerabilities, such as SQL injection, XSS, or insecure handling of sensitive data.
5. **Observability**: Ensure the code includes proper metrics, logging, and tracing mechanisms to facilitate monitoring and debugging.
# 開發流程面
I want you to performing a code review, ensure the following checklist is satisfied:
1. **Simplified interface that meets requirements**: Verify that the interface is as minimal and straightforward as possible while still fulfilling all functional requirements.
2. **Consistency and adherence to the Principle of Least Surprise**: Ensure the interface behaves predictably and aligns with established conventions or patterns within the codebase.
3. **Encapsulation of internal state**: Confirm that internal states are properly hidden, exposing only the necessary information or methods to the external world.
4. **Compatibility with dependent components**: Verify that all components or modules interacting with the interface function correctly without unexpected issues.
# 開發流程面
# 技術執行面
# 開發流程面
產規格文件
產 PR Description
# 開發流程面
對改動的信心足夠
測試足夠 或 QA 足夠
實驗性質的內容
# 開發流程面
使用合適的形式
針對容易 Review 的引入自動化工具
把心力放在需要 Review 的複雜內容上
規格明確,bug 自然會比較容易處理
縮減任務範圍 / PR 大小,縮減 Review 所需耗費的心力與時程
先 Self Review,自己能接受的品質才送出
https://www.thingsaboutweb.dev
或搜尋『網頁開發雜記』