代碼檢閱{#code-reviews}
審查 pull request 是一種常見的貢獻方式。儘管持續整合 (CI) 可確保程式碼達到預期的效果,但這還不夠。有些貢獻的特質是無法自動化的:設計、程式碼結構與架構、測試品質或錯誤。以下各節代表程式碼檢閱流程的不同面向。
可讀性{#readability}#
程式碼是否清楚地表達了它的意圖?如果您需要花一大堆時間來搞清楚程式碼的作用,那麼程式碼的實作就需要改進。 建議將代碼分割成更容易理解的小抽象。另類的,也是最後的資源,他們可以加上註解解釋背後的理由。問問自己,如果沒有拉取請求描述等任何周圍的上下文,你是否能夠在不久的將來理解這段程式碼。
小的拉取請求{#small-pull-requests}#
大的拉取請求很難審閱,也很容易遺漏細節。如果拉取請求變得太大且無法管理,建議作者將其分解。
有幾種情況是不可能分割 pull request 的,例如當變更是緊耦合的,無法分割。在這種情況下,作者應該提供清楚的變更解釋及其背後的原因。
一致性{#consistency}#
變更與專案的其他部分保持一致是很重要的。不一致會讓維護工作變得複雜,因此我們應該避免。如果有向使用者輸出訊息或報告錯誤的方法,我們應該堅持。如果作者不同意專案的標準,建議他們開啟一個問題,讓我們可以進一步討論。
測試{#tests}#
透過測試可以放心地變更程式碼。拉取請求上的程式碼應該經過測試,而且所有的測試都應該通過。一個好的測試是能持續產生相同的結果,而且容易理解和維護。審查員大部分的審查時間都花在實作程式碼上,但測試也同樣重要,因為它們也是程式碼。
突破性變更{#breaking-changes}#
對 Tuist 使用者而言,破壞性變更會造成不良的使用者經驗。除非絕對必要,否則應該避免引入破壞性變更。我們可以利用許多語言特性來發展 Tuist 的介面,而無需進行破壞性變更。一項變更是否會造成破壞可能並不顯著。驗證變更是否破壞的一種方法是針對 fixtures 目錄中的 fixture 專案執行 Tuist。這需要站在使用者的立場,想像這些變更會如何影響使用者。