跳至內容

程式碼審查

審查拉取請求是一種常見的貢獻方式。儘管持續整合(CI)能確保程式碼執行預期行為,但這還不夠。有些貢獻特質無法自動化:設計、程式碼結構與架構、測試品質,或拼寫錯誤。以下章節代表程式碼審查流程的不同面向。

可讀性#

程式碼是否清楚表達其意圖?如果你需要花很多時間才能弄清楚程式碼在做什麼,就表示實作需要改進。 建議將程式碼拆分為較小且更容易理解的抽象單元。作為最後手段,也可以新增註解來說明背後的理由。問問自己:在沒有拉取請求描述等周邊脈絡的情況下,未來是否仍能理解這段程式碼。

小型拉取請求#

大型拉取請求難以審查,也更容易遺漏細節。如果拉取請求變得過於龐大且難以管理,建議作者將其拆分。

例外情況

在某些情況下無法拆分拉取請求,例如變更緊密耦合而無法分割。在這些情況下,作者應提供清晰的變更說明及其背後的原因。

一致性#

變更應與專案的其他部分保持一致。不一致會增加維護難度,因此我們應避免這種情況。如果專案已有向使用者輸出訊息或回報錯誤的方式,我們應遵循該做法。如果作者不同意專案標準,建議他們開啟一個議題,以便進一步討論。

測試#

測試讓我們能有信心地變更程式碼。拉取請求中的程式碼應經過測試,且所有測試都應通過。好的測試能穩定產生相同結果,且易於理解與維護。審查者大多將時間花在實作程式碼上,但測試同樣重要,因為它們也是程式碼。

破壞性變更#

破壞性變更會對 Tuist 使用者造成不良的使用者體驗。除非絕對必要,否則貢獻應避免引入破壞性變更。我們可以運用許多語言特性來演進 Tuist 的介面,而不必訴諸破壞性變更。一項變更是否具有破壞性可能並不明顯。驗證變更是否具破壞性的方法之一,是在 fixtures 目錄中對範例專案執行 Tuist。這需要我們站在使用者的角度,想像這些變更會對他們造成什麼影響。