從團隊開始 code review 後一直沒有好好整理大家決議後的 pattern,趁這次鐵人賽的機會來整理一下這兩年來的 code review 項目,主要針對 react, express, typescript 以及一些團隊內部的共識(如檔案命名、檔案位置等),基本上都是以 js/ts 為主,沒意外應該會很紊亂,未來有機會再整理更好一些。
關於變數、函式、檔案、資料夾等名稱與位置相關規範
規範必帶參數與選填參數,避免過多參數導致函式不易使用,並在不同使用情境時,函式參數名稱需要對應調整。
規範 export default 的情境與 import 命名
PR 與 code review 相關規範
cursor 與 offset 使用情境與實作方式
翻譯檔案的位置與 key 相關規範
錯誤碼分類與定義
時間與日期在前後端使用與資料庫儲存方式
避免反向表達式
三元運算子、input 等細節規範
檔案名稱、型別名稱與位置等相關規範
共用型別與自訂型別等相關規範
盡量採用內建型別不重複造輪子
使用 deep-pick 取代 pick
開啟 noUncheckedIndexedAccess 避免部分 runtime 錯誤
元件、頁面、Custom Hook、HOC 等命名規範
根據商業邏輯與關注點分離來結構化專案
後端回傳資料變數、通用資料變數與元件資料變數
載入狀態、空狀態、部分狀態、理想狀態與錯誤狀態的實作方式
避免將元件放到狀態中,也避免狀態過多
切分商業邏輯與渲染邏輯
元件型別定義方式
同步與非同步事件處理機制
Custom Hook 命名、回傳與位置規範
資料抓取的方式與位置
throw Error 與回傳錯誤的使用情境
API 回傳資料格式規範
更新 hasura 資料的方式
從 hasura 讀取資料後的型別轉換方式