AI 輔助 App 開發:我的實際工作流程與心得

前言

身為獨立開發者,時間是最珍貴的資源。過去一年多來,AI 工具徹底改變了我的開發方式。從最初的半信半疑,到現在幾乎每天都離不開這些工具,這篇文章想分享我真實的使用經驗,包含踩過的坑和摸索出的最佳實踐。

我目前的 AI 工具組合

在正式進入工作流程之前,先列出我目前常用的 AI 開發工具:

  • Claude Code:命令列 AI 助手,直接在終端機中操作程式碼,我的主力工具
  • GitHub Copilot:IDE 內的程式碼補全,適合日常打字加速
  • Claude(對話介面):用來討論架構設計、釐清需求、撰寫文件

每個工具都有它最擅長的場景,搭配使用效果最好。

工作流程一:從零開始建立新功能

當我要為 App 新增一個功能時,流程通常是這樣的:

第一步:用 Claude 釐清需求和架構

在動手寫程式之前,我會先跟 Claude 聊聊這個功能的需求。例如,我最近要在一個兒童遊戲 App 中加入成就系統:

「我要在一個 Flutter 兒童遊戲 App 中加入成就系統。成就包含:首次破關、連續遊玩天數、累計得分。需要本地儲存,不需要後端。請幫我規劃架構。」

Claude 會幫我列出資料模型、需要的類別、建議的套件(例如用 shared_preferenceshive 做本地儲存),以及整體架構的建議。這個階段重點不是取得可以直接用的程式碼,而是釐清方向。

第二步:用 Claude Code 實作

確定架構之後,我會用 Claude Code 來實際撰寫程式碼。Claude Code 的強項是它能直接讀取和修改專案中的檔案:

# 在專案目錄中啟動 Claude Code
claude

# 直接描述需求,它會讀取現有程式碼並產生對應的實作
> 根據 lib/models/ 下的現有資料模型風格,建立成就系統的資料模型和 repository

Claude Code 會分析我現有的程式碼風格、命名慣例和專案結構,然後產生一致的程式碼。這比從零開始寫省了很多時間,也不用擔心風格不一致。

第三步:用 Copilot 補完細節

在實作的過程中,GitHub Copilot 負責加速日常的打字工作。它最強的地方是根據上下文產生程式碼補全:

// 只要打出函式名稱和參數,Copilot 就能推測實作
Future<void> unlockAchievement(String achievementId) async {
  // Copilot 會根據上下文自動補完:
  // - 讀取現有成就列表
  // - 更新狀態
  // - 儲存到本地
  // - 觸發通知
}

工作流程二:Debug 與問題排解

AI 工具在 debug 時特別有價值。以前遇到奇怪的 bug,可能要花好幾個小時翻文件和 Stack Overflow。現在的流程快多了。

直接貼錯誤訊息

遇到錯誤時,我會把完整的 error log 貼給 Claude Code:

> 我在執行 flutter build appbundle 時遇到這個錯誤:
> [貼上錯誤訊息]

大多數情況下,它能準確指出問題所在,並給出具體的修復步驟。尤其是 Gradle 相關的 Android 建置錯誤,手動排查非常痛苦,但 AI 通常能快速找到原因。

複雜邏輯的理解

有時候我需要理解第三方套件的原始碼,或是回頭看自己幾個月前寫的複雜邏輯。這時候讓 AI 幫忙解釋比自己硬讀快得多:

> 請解釋 lib/services/game_engine.dart 中的碰撞偵測邏輯,特別是 _checkBoundaryCollision 方法

工作流程三:撰寫測試

寫測試大概是我覺得 AI 工具帶來最大效率提升的領域。以前寫測試是最容易被拖延的工作,現在變得輕鬆很多:

> 為 lib/services/achievement_service.dart 撰寫完整的 unit test,
> 包含正常情況、邊界情況和錯誤處理

Claude Code 會根據實際的程式碼產生對應的測試,而且通常涵蓋的情境比我自己想到的還多。當然,產生出來的測試還是需要人工審查和調整,但省下的時間非常可觀。

我踩過的坑與心得

不要盲目信任 AI 產生的程式碼

這是最重要的一點。AI 產生的程式碼看起來通常很合理,但可能有細微的邏輯錯誤。我曾經直接用了 AI 產生的日期計算邏輯,結果在月底出現了 off-by-one error。每一行程式碼都要仔細審查。

提供足夠的上下文

AI 的輸出品質直接取決於你給它的上下文品質。與其說「幫我寫一個列表頁面」,不如說:

「參考 lib/screens/home_screen.dart 的風格,建立一個成就列表頁面,使用 Riverpod 管理狀態,列表項目顯示成就圖示、名稱和解鎖狀態。」

用 AI 來學習,而不只是產生程式碼

我發現最有價值的使用方式不是單純讓 AI 寫程式碼,而是透過跟 AI 的對話來學習新技術。例如,我對 Dart 的 Isolate 不太熟悉,就透過跟 Claude 來回討論、看它的範例、問它設計決策背後的原因,學到了很多。

建立 CLAUDE.md 統一風格

在專案根目錄放一個 CLAUDE.md,定義程式碼風格、架構規範和偏好的套件,可以讓 Claude Code 產生更一致的程式碼。這個做法對獨立開發者特別有用,等於建立了一份給 AI 看的專案規範。

實際效率提升

根據我粗略的估計,使用 AI 工具後:

  • 功能開發速度:提升約 40-60%,視功能複雜度而定
  • Debug 時間:減少約 50%,尤其是配置和環境相關的問題
  • 撰寫測試:速度提升 2-3 倍
  • 學習新技術:比純看文件快很多,互動式的學習效果更好

什麼時候不該依賴 AI

雖然 AI 工具非常好用,但有些場景我還是傾向自己動手:

  • 核心業務邏輯:影響使用者體驗的關鍵邏輯,我會自己仔細寫
  • 安全相關的程式碼:例如資料加密、權限驗證,AI 可能忽略安全細節
  • 效能敏感的程式碼:遊戲迴圈、動畫邏輯等需要精確控制的部分
  • 架構決策:AI 可以提供建議,但最終決策還是要自己做

結語

AI 工具不會取代開發者,但會取代不使用 AI 工具的開發者。對獨立開發者來說,這些工具等於幫你多了幾個免費的助手。重點是找到適合自己的使用方式,把 AI 當成工具而不是依賴。

最後提醒一點:AI 工具發展得很快,今天分享的工作流程可能半年後就需要更新。保持學習和嘗試新工具的心態,才是最重要的。