第 06 課 / 從修改理解作品

與 Agent 學習
Swift 與 SwiftUI

延續第五週的用戶回饋,選一個要改善的功能,透過 Agent 建立分支、進行修改並加入對應設定。每次修改都練習解釋程式、預測行為,再在 iPhone 上驗證。

01 / 如何學習

用一個小改動,完成一輪理解與驗證

  1. 選定問題與驗收條件

    從用戶觀察挑一項改動。寫清楚現在的行為、期望的結果、修改範圍與如何驗證。

  2. 請 Agent 找出相關程式

    先要求列出相關檔案、View、狀態與資料來源,附上實際位置;自己打開檔案確認。

  3. 一次學一個概念

    遇到不熟悉的語法,請 Agent 用該段程式說明,再查官方資料。用一個短範例或 Xcode Playground/Preview 練習。

  4. 先預測,再修改

    在 Agent 修改前,說出哪個狀態會改變、哪個畫面應該更新。修改後看 diff,找出與預測不同的地方。

  5. 操作並解釋

    建置,在 iPhone 上完成任務並檢查設定切換。用自己的話解釋資料如何流到畫面;若說不清楚,回到相關概念再練習。

02 / 需要理解的觀念

Swift 描述資料與行為,SwiftUI 描述畫面

Swift:從功能需要的語法開始

let/var 與型別:哪些值固定、哪些值會改變?

條件與集合:如何篩選、排序或處理一份清單?

Optional:資料不存在時,程式如何處理?

函式、struct 與 closure:資料長什麼樣子?操作如何傳入、產生結果?

SwiftUI:從一個畫面的資料流開始

View 與 body:一個畫面由哪些小 View 組成?

容器與 modifier:排列、樣式和互動套用在哪一層?

State 與 Binding:誰擁有狀態?子 View 如何讀取或修改?

導航與模型更新:按下按鈕後,資料或目的畫面如何改變?

學習順序由專題需要決定。先用官方教學理解概念,再回到自己的程式;閱讀 API 文件時,同時確認專案使用的 Swift、SDK 與最低 OS 版本。

03 / 功能修改與設定

讓設定真的影響 App 行為

例如在作業清單加入「只顯示未完成」設定。先定義預設值、切換後的結果,以及關閉 App 再打開是否需要保留。

  1. 寫清楚規則

    設定關閉時顯示哪些資料?開啟時排除哪些項目?沒有符合項目時,畫面顯示什麼?

  2. 追蹤設定值

    找出控制項讀寫的位置、值由誰管理、在哪裡套用篩選,以及是否透過儲存層保存。

  3. 驗證前後狀態

    切換開/關、換到其他畫面再返回;若規格要求保存,再關閉與重新打開 App。確認功能與設定符合驗收條件。

04 / View 結構與 App 架構

從 App 入口追到一次操作的結果

  1. App 入口與導航

    App 從哪裡啟動?第一個畫面是什麼?如何進到功能與設定畫面?

  2. View 組成

    畫面有哪些容器、清單、控制項與可重用元件?各 View 接收哪些資料與操作?

  3. 狀態與資料模型

    誰擁有設定值與清單資料?哪些 View 共用它們?資料改變後,哪裡應該更新?

  4. 服務與儲存

    需要計算、網路或保存資料時,程式交給哪個部分處理?不需要的層次可以省略。

05 / 分支與版本實作

請 Agent 操作,你要能說明每一步

Branch
分支是指向 commit 的名稱,讓一串修改沿著自己的進度發展;建立分支不會另外複製一個專案資料夾。
Switch branch
切換分支會切換目前工作版本。先檢查未提交修改;部分修改可能隨切換保留,衝突時 Git 可能阻止切換。
Commit
Commit 記錄已暫存的內容。訊息要能說明這次改動;本機 commit 之後,第 7 週再練習 Push、PR 與 Review。
Diff
比較版本或未提交修改,確認 Agent 改了哪些內容。每次提交前閱讀即將提交的差異。
  1. 保留基準並建立分支

    先確認目前分支與工作狀態,保留本次原型的相關修改。請 Agent 建立功能分支,例如 feature/feedback-settings,並回報目前分支。

  2. 修改、審查與提交

    一次完成一個可驗證改動,閱讀 diff,只暫存相關檔案,完成建置與操作後 commit。

  3. 練習切換與比較

    在已提交且工作狀態清楚時,切回主分支觀察舊版,再回功能分支觀察新版。切換後重新建置,避免把 iPhone 上的舊 App 誤認為目前程式版本。

git status
git branch
git switch -c feature/feedback-settings
# 完成一項修改後
git diff
git add path/to/changed-file
git diff --staged
git commit -m "Add setting for feedback improvement"
# 確認工作狀態後,練習切換
git switch main
git switch feature/feedback-settings

將檔案路徑與主分支名稱換成專案實際值。也可使用第五週介紹的 Sublime Merge,觀察同一份 repository 的分支、commit graph 與 diff。

回顧 Git 指令與 Sublime Merge 操作 →

06 / 官方學習與延伸資源

照教學練習,遇到 API 再查文件

延伸閱讀與範例專案

07 / 本週交付

能修改,也能解釋與比較

← 返回第 6 週課綱