Skip to main content

第 11 課:常見工作流程

學習目標

完成本課程後,您將能夠:

  • 執行完整的功能開發工作流程
  • 應用系統化的 bug 修復
  • 進行程式碼審查工作流程
  • 執行安全重構
  • 學習新程式庫工作流程
  • 練習測試驅驅開發

先決條件

  • 完成第 1-10 課 - 所有先前的教程內容
  • 真實專案 - 將工作流程應用到您自己的程式碼
  • Git 經驗 - 基本的版本控制知識

預估時間: 35 分鐘


工作流程 1:功能開發

開發新功能是一個常見的任務。

逐步過程

1. 了解需求

You: 我需要新增使用者個人資料功能。
幫我規劃這個功能。

2. 探索現有程式碼

You: 這個程式庫的其他 CRUD 操作是如何實作的?

Claude: [使用 Explore agent]
找到範例:
- src/products.py - Product CRUD
- src/models/user.py - User model
- 遵循此模式以保持一致性

3. 設計實作

You: 基於現有模式,設計個人資料功能。

Claude: [為您的需求建立架構]
架構:
- 端點: GET/PUT /api/user/profile
- Controller: ProfileController
- Service: ProfileService
- Validation: ProfileSchema

4a. 實作後端:

You: 建立個人資料端點

Claude: [建立 src/api/profile.py]
✓ 建立了 profile API 端點

4b. 新增驗證:

You: 為個人資料新增驗證

Claude: [建立驗證 schema]
✓ 已新增輸入驗證

4c. 實作前端:

You: 建立個人資料頁面元件

Claude: [建立 components/Profile.jsx]
✓ 已建立個人資料 UI

5. 測試和重構:

You: 執行測試並修復任何問題

Claude: [執行測試]
✓ 所有測試通過

工作流程 2:Bug 修復

Bug 是不可避免的。Claude 協助您系統化地修復它們。

Bug 修復過程

1. 了解 bug

You: 我收到此錯誤:
"TypeError: Cannot read property 'map' of undefined"
在 dashboard 元件載入時發生。

Claude: [調查問題]
根因分析:
useEffect 在資料載入前執行
stats 陣列在初始渲染時為 undefined

修正:新增載入狀態或預設值

2. 重現 bug

You: 幫我重現這個 bug

Claude: [提供重現步驟]
1. 導覽到 /dashboard
2. 檢查瀏覽器主控台
3. 觀察載入時的錯誤

3. 找根本原因

You: 這個錯誤的根本原因是什麼?

Claude: [找出根本原因]
根本原因:
useEffect 的相依性陣列缺失
應該將使用者資料作為相依性

4. 實作修正

You: 修正這個 bug

Claude: [應用修正]
已修正:新增適當的相依性和載入狀態

5. 新增回歸測試

You: 新增測試以防止回歸

Claude: [新增測試]
✓ 測試已加入以防止此 bug 回歸

工作流程 3:程式碼審查

程式碼審查對品質至關重要。

程式碼審查過程

1. 請求審查

You: 審查 PR #45

Claude: [取得 PR 差異]
進行程式碼審查

2. 分析變更

Claude: [分析程式碼]
PR #45 的程式碼審查:

優點:
✓ 程式碼結構良好
✓ 完善的測試
✓ 良好的錯誤處理

關注:
⚠ API 金鑰應在環境變數中
⚠ SQL 注入風險
⚠ 缺少速率限制

建議:
1. 將 STRIPE_SECRET_KEY 移至 .env
2. 對查詢使用參數化
3. 新增速率限制

3. 討論問題

You: 點 2 提出的問題,您能修正它們嗎?

Claude: [修正問題]
我已修正了這些問題:
[顯示修正前後]

4. 驗證修正

You: 他們更新了 PR,重新審查

Claude: [重新分析]
✓ 所有安全問題已解決
✓ 程式碼看起來很好可以合併

工作流程 4:重構

重構意味著在不變更行為的情況下改善程式碼結構。

重構工作流程

1. 識別重構需求

You: UserService class 500 行且難以維護。幫我重構它。

Claude: [分析該類別]
發現 8 個不同的職責:
- 資料驗證
- 使用者管理
- 查詢處理
- 認證處理

建議分解為:
- UserCreationService
- UserValidationService
- UserQueryService
- UserAuthenticationService

2. 計劃重構

You: 建立重構計畫

Claude: [建立重構計畫]
PLAN: 重構 UserService

階段 1: 提取關注點
- 識別不同的職責
- 建立分離的服務

階段 2: 移動方法
- 將方法遷移到新服務
- 更新匯入
- 更新測試

階段 3: 更新測試
- 修改測試以適應新結構
- 確保涵蓋維持

3. 執行重構

You: 執行階段 1

Claude: [提取服務]
✓ 已建立服務

You: 繼續階段 2

Claude: [移動方法並更新匯入]
✓ 階段 2 完成

You: 執行測試

Claude: ✓ 測試通過

✅ 檢查您的理解

  1. 什麼是重構?

    • 增加新功能
    • 在不改變行為的情況下改善程式碼結構
    • 修復 bug
    • 更新文件
  2. 何時應該使用計畫模式?

    • 用於簡單編輯
    • 用於複雜、多檔案變更
    • 用於讀取檔案
    • 用於執行測試
  3. 什麼技能建立 git 提交?

    • /save
    • /commit
    • /git
    • /store
  4. True or False: 程式碼審查應該是批評性的。

    • True
    • False - 建設性且以改進為目標
  5. 什麼是學習新程式庫的「Try It Yourself」練習?

    • 閱讀文件
    • 執行命令
    • 查看範例
    • 以上皆非

答案: 1-b, 2-b, 3-b, 4-False, 5-d


總結

在本課程中,您學到了:

  • 功能開發 - 計畫、實作、測試、文件
  • Bug 修復 - 理解、重現、修正、測試
  • 程式碼審查 - 分析、提供回饴、驗證
  • 重構 - 改善結構、保持行為
  • 學習新程式庫 - 探索、追蹤、提問

下一步

在**第 12 課:提示、技巧和最佳實踐**中,您將學到:

  • 溝通提示以獲得更好的結果
  • 避免常見錯誤
  • 效能優化
  • 團隊協作提示
  • 疑難排除

進階閱讀


繼續至第 12 課:提示、技巧和最佳實踐