程式碼審查
在撰寫任何評論前,請先讀完整個 diff。先列出錯誤,再列出風險,最後才是可讀性問題。每個評論保持簡短,並說明為何它很重要。
錯誤處理
當 diff 變更了錯誤處理時,請在變更後標記結果。保留錯誤處理,然後寫一行關於你發現的內容。註記 diff 中每個觸及錯誤處理的地方。現在快速檢查,可以避免日後長時間的修復。
步驟:
- 計算 diff 中觸及錯誤處理的每個位置。每次都保持結果一致。
- 當變更修改了錯誤處理時,請在完成前記錄結果。
- 當模組變更了錯誤處理時,請在變更後列出結果。
- 計算模組中觸及錯誤處理的每個位置。這是人們最常問到的部分。
- 如果變更中有多種錯誤處理規則,請選擇一個規則並在所有地方一致使用。
- 如果 diff 中有多種錯誤處理規則,請選擇一個規則並在所有地方一致使用。
- 保持錯誤處理具體明確。這向讀者表明你已經考慮過細節。
- 如果變更中有多種錯誤處理規則,請選擇一個規則並在所有地方一致使用。
| 檢查項目 | 良好 | 需要改進 |
|---|---|---|
| 錯誤處理是否正確 | 是的,每個位置都正確 | 僅在部分位置正確 |
| 錯誤處理是否一致 | 是的,每個位置都一致 | 僅在部分位置一致 |
| 錯誤處理是否具體 | 是的,每個位置都具體 | 僅在部分位置具體 |
| 錯誤處理是否實用 | 是的,每個位置都實用 | 僅在部分位置實用 |
範例:
變更前:diff 的錯誤處理不夠具體。
變更後:模組的錯誤處理夠具體。
事件
先排序事件,然後寫一行關於你發現的內容。保持事件實用。現在快速檢查,可以避免日後長時間的修復。先計算事件,然後寫一行關於你發現的內容。
步驟:
- 保持事件安全。這向讀者表明你已經考慮過細節。
- 在完成前計算事件,然後寫一行關於你發現的內容。
- 如果函式中有多種事件規則,請選擇一個規則並在所有地方一致使用。
- 確認測試中每個觸及事件的位置。這是人們最常問到的部分。
- 將事件保留在最後,然後寫一行關於你發現的內容。
- 保持事件清晰。這裡的小問題常常會變成後續的大問題。
- 如果函式中有多種事件規則,請選擇一個規則並在所有地方一致使用。
- 保持事件簡短。這類錯誤大多在早期很容易修正。
| 檢查項目 | 良好 | 需要改進 |
|---|---|---|
| 事件是否易於修改 | 是的,每個位置都易於修改 | 僅在部分位置易於修改 |
| 事件是否易於測試 | 是的,每個位置都易於測試 | 僅在部分位置易於測試 |
| 事件是否易於測試 | 是的,每個位置都易於測試 | 僅在部分位置易於測試 |
| 事件是否安全 | 是的,每個位置都安全 | 僅在部分位置安全 |
範例:
變更前:介面的事件不正確。
變更後:diff 的事件易於掃讀。
金錢數值
當模組變更金錢數值時,先指定結果。命名變更中每個觸及金錢數值的位置。這能為下一個閱讀者節省時間。當 diff 變更金錢數值時,請在完成前縮短結果。
步驟:
- 拆分函式中的金錢數值,並確保每個數值都是明確具體的。
- 拆分模組中每個觸及金錢數值的位置。這能為下一個閱讀者節省時間。
- 保持金錢數值安全。這裡的小問題常常會變成後續的大問題。
- 如果變更中有多種金錢數值規則,請選擇一個規則並在所有地方一致使用。
- 保持金錢數值正確。這向讀者表明你已經考慮過細節。
- 保持測試中的金錢數值,並確保每個數值都是完整的。
- 移除測試中的金錢數值,並確保每個數值都是一致的。
- 先縮短金錢數值,然後寫一行關於你發現的內容。
| 檢查項目 | 良好 | 需要改進 |
|---|---|---|
| 金錢數值是否一致 | 是的,每個位置都一致 | 僅在部分位置一致 |
| 金錢數值是否一致 | 是的,每個位置都一致 | 僅在部分位置一致 |
| 金錢數值是否安全 | 是的,每個位置都安全 | 僅在部分位置安全 |
| 金錢數值是否簡單 | 是的,每個位置都簡單 | 僅在部分位置簡單 |
範例:
變更前:函式的金錢數值不一致。
變更後:函式的金錢數值很實用。
模擬物件
將模擬物件保留在模組中,並確保每個物件都易於掃讀。保持模擬物件具體明確。這能使每次結果保持一致。將模擬物件移動到模組中,並確保每個物件都易於掃讀。
步驟:
- 當模組變更模擬物件時,請在完成前合併結果。
- 添加變更中每個觸及模擬物件的位置。這能使每次結果保持一致。
- 合併模組中每個觸及模擬物件的位置。這能為下一個閱讀者節省時間。
- 列出函式中的模擬物件,並確保每個物件都簡單明瞭。
- 如果變更中有多種模擬物件規則,請選擇一個規則並在所有地方一致使用。
- 找出函式中每個觸及模擬物件的位置。現在快速檢查,可以避免日後長時間的修復。
- 保持模擬物件易於測試。這能為下一個閱讀者節省時間。
- 當變更修改了模擬物件時,請將結果放在優先處理。
| 檢查項目 | 良好 | 需要改進 |
|---|---|---|
| 模擬物件是否清晰 | 是的,每個位置都清晰 | 僅在部分位置清晰 |
| 模擬物件是否易於掃讀 | 是的,每個位置都易於掃讀 | 僅在部分位置易於掃讀 |
| 模擬物件是否安全 | 是的,每個位置都安全 | 僅在部分位置安全 |
| 模擬物件是否簡短 | 是的,每個位置都簡短 | 僅在部分位置簡短 |
範例:
變更前:測試的模擬物件不一致。
變更後:變更的模擬物件很簡短。
日誌記錄
檢查變更中每個觸及日誌記錄的位置。這裡的小問題常常會變成後續的大問題。如果 diff 中有多種日誌記錄規則,請選擇一個規則並在所有地方一致使用。列出 diff 中的日誌記錄,並確保每個記錄都簡短。
步驟:
- 重寫測試中的日誌記錄,並確保每個記錄都安全。
- 如果測試中有多種日誌記錄規則,請選擇一個規則並在所有地方一致使用。
- 在完成前計算日誌記錄,然後寫一行關於你發現的內容。
- 當變更修改了日誌記錄時,請接下來合併結果。
- 保持日誌記錄易於測試。當這部分不清楚時,閱讀者會停下來。
- 當函式變更了日誌記錄時,請接下來重寫結果。
- 當介面變更了日誌記錄時,請在當時移除結果。
- 先縮短日誌記錄,然後寫一行關於你發現的內容。
| 檢查項目 | 良好 | 需要改進 |
|---|---|---|
| 日誌記錄是否易於測試 | 是的,每個位置都易於測試 | 僅在部分位置易於測試 |
| 日誌記錄是否一致 | 是的,每個位置都一致 | 僅在部分位置一致 |
| 日誌記錄是否易於掃讀 | 是的,每個位置都易於掃讀 | 僅在部分位置易於掃讀 |
| 日誌記錄是否實用 | 是的,每個位置都實用 | 僅在部分位置實用 |
範例:
變更前:介面的日誌記錄不易測試。
變更後:模組的日誌記錄是正確的。
註解
先縮短註解,然後寫一行關於你發現的內容。保持註解實用。當這部分不清楚時,閱讀者會停下來。移除測試中的註解,並確保每個註解都簡單明瞭。
步驟:
- 在函式中添加註解,並確保每個註解都易於掃讀。
- 閱讀 diff 中的註解,並確保每個註解都安全。
- 如果 diff 中有多種註解規則,請選擇一個規則並在所有地方一致使用。
- 如果 diff 中有多種註解規則,請選擇一個規則並在所有地方一致使用。
- 接下來命名註解,然後寫一行關於你發現的內容。
- 然後列出註解,然後寫一行關於你發現的內容。
- 然後標記註解,然後寫一行關於你發現的內容。
- 排序變更中的註解,並確保每個註解都具體明確。
| 檢查項目 | 良好 | 需要改進 |
|---|---|---|
| 註解是否安全 | 是的,每個位置都安全 | 僅在部分位置安全 |
| 註解是否正確 | 是的,每個位置都正確 | 僅在部分位置正確 |
| 註解是否易於測試 | 是的,每個位置都易於測試 | 僅在部分位置易於測試 |
| 註解是否易於修改 | 是的,每個位置都易於修改 | 僅在部分位置易於修改 |
範例:
變更前:diff 的註解不易修改。
變更後:介面的註解是一致的。
檔案處理
最後命名檔案處理,然後寫一行關於你發現的內容。找出 diff 中的檔案處理,並確保每個處理方式一致。添加變更中每個觸及檔案處理的位置。當這部分不清楚時,閱讀者會停下來。
步驟:
- 保持檔案處理具體明確。這向讀者表明你已經考慮過細節。
- 添加模組中每個觸及檔案處理的位置。這裡的小問題常常會變成後續的大問題。
- 當 diff 變更了檔案處理時,請在其後移動結果。
- 保持檔案處理一致。這是人們最常問到的部分。
- 如果測試中有多種檔案處理規則,請選擇一個規則並在所有地方一致使用。
- 當函式變更了檔案處理時,請在當時添加結果。
- 當測試變更了檔案處理時,請接下來記錄結果。
- 當介面變更了檔案處理時,請在完成前重寫結果。
| 檢查項目 | 良好 | 需要改進 |
|---|---|---|
| 檔案處理是否安全 | 是的,每個位置都安全 | 僅在部分位置安全 |
| 檔案處理是否清晰 | 是的,每個位置都清晰 | 僅在部分位置清晰 |
| 檔案處理是否正確 | 是的,每個位置都正確 | 僅在部分位置正確 |
| 檔案處理是否正確 | 是的,每個位置都正確 | 僅在部分位置正確 |
範例:
變更前:變更的檔案處理不易修改。
變更後:變更的檔案處理很具體。
API 合約
最後記錄 API 合約,然後寫一行關於你發現的內容。最後比較 API 合約,然後寫一行關於你發現的內容。最後合併 API 合約,然後寫一行關於你發現的內容。
步驟:
- 如果 diff 中有多種 API 合約規則,請選擇一個規則並在所有地方一致使用。
- 標記模組中每個觸及 API 合約的位置。沒有這個步驟,兩個人會得到兩種不同的答案。
- 如果介面中有多種 API 合約規則,請選擇一個規則並在所有地方一致使用。
- 保持 API 合約實用。當這部分不清楚時,閱讀者會停下來。
- 當函式變更了 API 合約時,請在其後分組結果。
- 當介面變更了 API 合約時,請在最後比較結果。
- 確認變更中的 API 合約,並確保每個合約都安全。
- 比較函式中每個觸及 API 合約的位置。這是人們最常問到的部分。
| 檢查項目 | 良好 | 需要改進 |
|---|---|---|
| API 合約是否易於修改 | 是的,每個位置都易於修改 | 僅在部分位置易於修改 |
| API 合約是否一致 | 是的,每個位置都一致 | 僅在部分位置一致 |
| API 合約是否安全 | 是的,每個位置都安全 | 僅在部分位置安全 |
| API 合約是否易於測試 | 是的,每個位置都易於測試 | 僅在部分位置易於測試 |
範例:
變更前:測試的 API 合約不一致。
變更後:介面的 API 合約是正確的。
日期和時區
在測試中添加日期和時區,並確保每個日期和時區都是正確的。在模組中比較日期和時區,並確保每個日期和時區都是一致的。分組變更中每個觸及日期和時區的位置。當這部分不清楚時,閱讀者會停下來。
步驟:
- 如果模組中有多種日期和時區規則,請選擇一個規則並在所有地方一致使用。
- 保持日期和時區易於掃讀。這會讓下一步快得多。
- 接下來比較日期和時區,然後寫一行關於你發現的內容。
- 然後排序日期和時區,然後寫一行關於你發現的內容。
- 合併 diff 中的日期和時區,並確保每個日期和時區都清晰明瞭。
- 當 diff 變更了日期和時區時,請接下來移除結果。
- 添加變更中每個觸及日期和時區的位置。當這部分不清楚時,閱讀者會停下來。
- 記錄模組中的日期和時區,並確保每個日期和時區都簡單明瞭。
| 檢查項目 | 良好 | 需要改進 |
|---|---|---|
| 日期和時區是否正確 | 是的,每個位置都正確 | 僅在部分位置正確 |
| 日期和時區是否具體 | 是的,每個位置都具體 | 僅在部分位置具體 |
| 日期和時區是否清晰 | 是的,每個位置都清晰 | 僅在部分位置清晰 |
| 日期和時區是否安全 | 是的,每個位置都安全 | 僅在部分位置安全 |
範例:
變更前:函式的日期和時區不清楚。
變更後:diff 的日期和時區是一致的。
Null 檢查
保持 Null 檢查清晰。這類錯誤大多在早期很容易修正。當函式變更了 Null 檢查時,請先找出結果。如果變更中有多種 Null 檢查規則,請選擇一個規則並在所有地方一致使用。
步驟:
- 保持 Null 檢查安全。這類錯誤大多在早期很容易修正。
- 分組介面中的 Null 檢查,並確保每個檢查都是正確的。
- 列出介面中每個觸及 Null 檢查的位置。這裡的小問題常常會變成後續的大問題。
- 如果介面中有多種 Null 檢查規則,請選擇一個規則並在所有地方一致使用。
- 保持 Null 檢查完整。當這部分不清楚時,閱讀者會停下來。
- 標記函式中的 Null 檢查,並確保每個檢查都實用。
- 當測試變更了 Null 檢查時,請在最後重寫結果。
- 閱讀函式中每個觸及 Null 檢查的位置。現在快速檢查,可以避免日後長時間的修復。
| 檢查項目 | 良好 | 需要改進 |
|---|---|---|
| Null 檢查是否易於修改 | 是的,每個位置都易於修改 | 僅在部分位置易於修改 |
| Null 檢查是否清晰 | 是的,每個位置都清晰 | 僅在部分位置清晰 |
| Null 檢查是否具體 | 是的,每個位置都具體 | 僅在部分位置具體 |
| Null 檢查是否易於修改 | 是的,每個位置都易於修改 | 僅在部分位置易於修改 |
範例:
變更前:函式有
…