📘 Java 後端開發規範手冊(團隊版)
🎯 目標與原則
- 提升代碼品質與可維護性
- 降低技術債與人為錯誤
- 建立統一的開發流程與技術文化
- 強化安全性與效能保障
🧱 一、項目結構與分層設計
1. 標準分層架構
controller → service → repository → entity
- Controller:只負責接收請求與回應結果,不寫業務邏輯
- Service:承載業務邏輯,禁止直接操作資料庫
- Repository:封裝資料庫操作,使用 MyBatis 或 JPA
- Entity:資料模型,禁止與前端直接對接
2. DTO / VO / BO 使用規範
- DTO:資料傳輸物件,用於 API 輸入輸出
- BO:業務物件,Service 層內部使用
✍️ 二、代碼風格與命名規範
1. 命名規則
| 類型 | 命名風格 | 範例 |
|---|---|---|
| 類名 | 大駝峰 | UserServiceImpl |
| 方法/變數 | 小駝峰 | getUserById |
| 常量 | 全大寫 + 底線 | MAX_RETRY_COUNT |
| 包名 | 全小寫 | com.company.user |
2. 代碼格式
- 每行不超過 120 字
- 使用空格縮排(4 個空格)
- 使用 IDE 自動格式化(統一設定)
3. 註解規範
- 公共方法需有 Javadoc
- 關鍵邏輯需加行內註解
- 禁止無意義註解(如
// TODO無內容)
🔐 三、安全性與穩定性
1. 輸入驗證
- 使用 Hibernate Validator(如
@NotNull,@Length) - 所有 API 輸入參數必須校驗
2. SQL 安全
- 禁止拼接 SQL,使用 ORM 或預編譯語句
- 禁止使用
select *,明確列出欄位
3. 敏感資訊處理
- 密碼需加密儲存(如 bcrypt)
- 禁止日誌輸出敏感資訊(token、密碼等)
4. 權限控制
- 使用 Spring Security 或自定義 RBAC 模型
- 所有 API 須設計權限驗證機制
🚀 四、效能與可擴展性
1. 快取策略
- 使用 Redis 快取熱點資料
- 設定合理過期時間,避免快取雪崩
2. 異步處理
- 使用 ThreadPoolExecutor 或 Spring Async
- 禁止使用
new Thread()
3. 限流與熔斷
- 接入 Sentinel、Hystrix 等工具
- 所有外部依賴需設計降級策略
🧪 五、測試與部署
1. 單元測試
- 使用 JUnit + Mockito
- 覆蓋率達 80% 以上
2. 集成測試
- 使用 SpringBootTest 模擬真實環境
- 測試資料需隔離,避免污染正式資料庫
3. CI/CD 流程
- 使用 Azure CI
- 每次提交自動構建、測試、部署至測試環境
🤝 六、團隊協作與流程
1. Git 規範
- 遵循 Git Flow 分支策略
- Commit Message 使用英文,格式:
feat: 新增用戶註冊功能
fix: 修復登入錯誤處理
refactor: 重構訂單邏輯
2. Code Review
- 所有 PR 必須經過至少一人審核
- Review 重點:邏輯正確性、命名清晰、是否有測試
3. 文件與知識管理
- 每個模組需有 README 說明架構與使用方式
- 使用 Swagger/OpenAPI 自動生成 API 文件
- 技術決策需記錄於 Confluence 或 Notion
📦 七、導入依賴的規範
1. 依賴管理工具
- 統一使用 Maven 或 Gradle,不混用
- 所有依賴版本需明確指定,禁止使用
LATEST或RELEASE
2. 依賴版本控制
- 使用 BOM 管理核心依賴版本
- 定期檢查依賴更新,避免使用過時或有漏洞版本
- 升級依賴需經測試驗證並註明原因
3. 第三方依賴準則
- 僅使用穩定版本,避免 beta、alpha、snapshot
- 優先選擇主流、活躍維護的開源庫
- 禁止導入未經審核的個人或不明來源依賴
4. 依賴精簡原則
- 嚴格控制依賴數量,避免冗餘與重複
- 禁止版本衝突,使用
mvn dependency:tree檢查
5. 安全與授權
- 所有依賴需符合授權政策(如 Apache 2.0、MIT)
- 禁止使用 GPL 或限制商業授權的依賴
- 修改過的依賴需註明來源與變更內容
📎 八、程式完成後由 Copilot 協助檢核的規範
為了提升程式品質與減少人為疏漏,團隊鼓勵在程式撰寫完成後,透過 Copilot 協助進行初步檢核與優化建議。
檢核流程建議
- 撰寫完成後,主動呼叫 Copilot 進行以下檢查:
- 方法命名是否清晰、語意明確
- 是否有重複邏輯可抽象為共用方法
- 是否有潛在的 NullPointerException 或邏輯漏洞
- 是否符合既定的代碼風格(命名、縮排、註解)
- 是否有未處理的例外或錯誤情境
使用方式建議
- 在 IDE 中(如 VS Code 或 IntelliJ)使用 Copilot 提示功能,於撰寫完成後:
- 加入註解,請 Copilot 解釋邏輯是否合理
- 請 Copilot 優化某段程式碼(如迴圈、條件判斷)
- 請 Copilot 檢查是否有更佳的設計模式可套用
注意事項
- Copilot 提供的是輔助建議,最終決策仍由開發者負責
- 若 Copilot 建議與團隊規範不符,應優先遵守團隊標準
- 建議將 Copilot 的優化建議納入 PR 討論,供 Reviewer 參考
推廣方式
- 鼓勵新進人員在 onboarding 時學習 Copilot 的使用技巧
- 每月技術分享可安排「Copilot 實戰應用」主題
- 可建立 Copilot 使用 FAQ 或範例庫,供團隊參考