Skip to main content

第 3 課:使用您的程式庫

學習目標

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

  • 了解 Claude 如何維護專案脈絡
  • 使用 Grep 和 Glob 工具搜尋檔案
  • 使用 @ 參照特定檔案
  • 詢問關於程式碼的聰明問題
  • 執行簡單的重構任務
  • 有效地導覽不熟悉的程式庫

先決條件

  • 完成第 1-2 課 - 基本操作和權限
  • 一個要處理的專案 - 使用範例專案或您自己的
  • 基本檔案系統知識 - 理解目錄和路徑

預估時間: 30 分鐘


專案脈絡與覺察

Claude Code 不僅處理個別指令 - 它維護您整個專案結構和對話歷史的覺察。

Claude 如何維持脈絡

  1. 對話歷史: 記住您討論過的內容
  2. 檔案操作: 追蹤已讀取或編輯的檔案
  3. 目錄結構: 理解您的專案佈局
  4. Git 歷史: 可存取提交記錄(如果可用)

為什麼脈絡很重要

沒有脈絡:
您> "修復 user 函式中的 bug"
Claude: "哪個 user 函式?哪個檔案?"

有脈絡:
[您一直在處理 authentication.py]
您> "修復 user 函式中的 bug"
Claude: "我看到 validate_user 函式中的問題..."

對話連續性

Claude 會記住跨交換的內容:

您> "讀取 models.py 中的 User 類別"
[Claude 讀取檔案]

您> "新增電子郵件欄位"
[Claude 知道您指的是 models.py 中的 User 類別]

搜尋檔案:Grep 和 Glob

在處理程式庫時,您經常需要找到特定的程式碼模式或檔案。Claude 使用兩種強大的搜尋工具。

Grep:搜尋檔案內容

Grep 搜尋檔案內部的特定文字或模式。

基本用法:

您> 在所有 Python 檔案中搜尋 "TODO" 註解

更具體:

您> 在 src/ 目錄中找出所有以 "get_user" 開頭的函式

模式匹配:

您> 使用 regex 搜尋電子郵件驗證模式

Claude 使用類似 grep 的搜尋來尋找:

  • 函式定義
  • 變數名稱
  • 註解和標註
  • 匯入陳述式
  • 錯誤訊息

Glob:依模式尋找檔案

Glob 依名稱模式尋找檔案。

基本用法:

您> 列出專案中的所有測試檔案

特定副檔名:

您> 在 src/ 目錄中找出所有 TypeScript 檔案

複雜模式:

您> 顯示所有設定檔(*.json、*.yaml、*.toml)

結合搜尋

您可以結合搜尋策略:

您> 在 components 目錄(Glob)中找出匯入 React(Grep)的檔案

Claude 將會:

  1. 使用 Glob 找出 components/ 中的檔案
  2. 使用 Grep 搜尋 React 匯入
  3. 呈現結果

理解檔案操作

Claude 有三個主要的檔案操作工具。

Read 工具

用途: 查看檔案內容而不修改

Claude 使用時機:

  • 您明確要求讀取檔案
  • Claude 需要脈絡來回答問題
  • 在進行變更前理解程式碼

範例:

您> calculate_total 函式做什麼?
[Claude 使用 Read 查看函式]

Edit 工具

用途: 修改現有檔案

Claude 使用時機:

  • 更新函式
  • 修復 bug
  • 重構程式碼
  • 新增匯入

範例:

您> 為 API 呼叫新增錯誤處理
[Claude 使用 Edit 修改函式]

Edit 的運作方式:

  • 顯示確切差異(變更)
  • 只修改特定部分
  • 保留其餘檔案

Write 工具

用途: 建立新檔案

Claude 使用時機:

  • 建立新模組
  • 新增設定檔
  • 撰寫測試檔
  • 產生文件

範例:

您> 為 User 類別建立測試檔案
[Claude 使用 Write 建立 user_test.py]

使用 @ 參照檔案路徑

@ 符號讓您直接在訊息中參照特定檔案。

基本用法

您> @src/main.py 做什麼?

這告訴 Claude 讀取 src/main.py 並解釋它。

多個檔案

您> 比較 @src/utils.py 和 @src/helpers.py

Claude 將讀取兩個檔案並比較它們。

有空格的檔案路徑

如果您的路徑有空格,使用引號:

您> 讀取 @"my folder/file.py"

相對路徑

@ 支援從目前目錄的相對路徑:

您> 檢查 @./config.json
您> 查看 @../shared/utils.js

使用 @ 的優點

  • 明確: Claude 確切知道您指的是哪個檔案
  • 快速: 跳過「哪個檔案?」的問題
  • 精確: 檔案名稱沒有歧義

不用 @ 的範例:

您> "讀取認證檔案"
Claude: "哪個認證檔案?auth.py?login.py?"

用 @ 的範例:

您> "讀取 @src/auth.py"
Claude: [立即讀取正確的檔案]

詢問關於程式碼的問題

Claude 的強大功能之一是解釋和分析程式碼。

您可以問的問題類型

理解程式碼:

您> @src/auth.py 中的認證流程如何運作?

尋找關係:

您> 哪些函式呼叫 process_payment 函式?

識別問題:

您> @models/user.py 中有潛在的 bug 嗎?

解釋概念:

您> 控制器類別中使用什麼設計模式?

程式碼審查:

您> 審查 @api/endpoints.py 的安全性問題

有效提問策略

具體說明:

  • ❌ "這段程式碼做什麼?"
  • ✅ "validate_token 函式如何運作?"

提供脈絡:

  • ❌ "修復這個"
  • ✅ "登入函式無法正確處理空密碼"

參照檔案:

  • ❌ "user model"
  • ✅ "@models/user.py"

解釋您的目標:

  • ❌ "變更資料庫"
  • ✅ "我想為所有使用者記錄新增 created_at 時間戳記"

簡單重構任務

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

常見的重構任務

重新命名變數/函式:

您> 為了清晰度,將 'd' 變數重新命名為 'user_data'

提取函式:

您> 將電子郵件驗證邏輯提取到個別函式

簡化複雜程式碼:

您> 簡化 @utils/parser.py 中的巢狀 if 陳述式

新增型別提示:

您> 為.calc.py 中的所有函式新增型別提示

改善命名:

您> 將函式 'proc' 重新命名為更具描述性的名稱

組織匯入:

您> 排序和組織 @main.py 中的匯入

重構工作流程

  1. 讀取程式碼 - Claude 分析目前的實作
  2. 提出變更 - Claude 建議改進
  3. 審查差異 - 您看到確切將變更的內容
  4. 核准 - 套用變更
  5. 測試 - 驗證重構的程式碼可運作

範例:

您> handle_request 函式太長了。將其分解為較小的函式

Claude: [讀取檔案]

Claude: 我將此函式分解為三個函式:
- parse_request()
- validate_request()
- process_request()

[Claude 顯示建議的重構與差異]

您: [核准變更]

Claude: [套用重構]

實務範例:探索範例專案

讓我們用真實的專案結構來練習。

步驟 1:導覽至範例專案

cd ~/claude-tutorial/docs/examples/sample-project

步驟 2:啟動 Claude Code

claude

步驟 3:探索專案結構

您> 這個專案有什麼檔案?顯示目錄結構

Claude 將會顯示組織。

步驟 4:尋找特定函式

您> 找出所有處理使用者輸入的函式

Claude 將會使用 Grep 搜尋相關函式。

步驟 5:理解特定檔案

您> 讀取 @src/calculator.py 並解釋它如何運作

步驟 6:識別關係

您> 哪些檔案匯入 Calculator 類別?

Claude 將會搜尋匯入並顯示相依性。

步驟 7:建議改進

您> 查看 @src/calculator.py 並建議任何改進

Claude 將會分析並提出重構建議。

步驟 8:進行簡單變更

您> 為 @src/calculator.py 新增平方根函式

審查建議的變更,如果看起來不錯就核准。


✅ 檢查您的理解

  1. Grep 和 Glob 的差別是什麼?

    • 它們是同一個東西
    • Grep 搜尋檔案內容,Glob 依名稱尋找檔案
    • Glob 搜尋檔案內容,Grep 依名稱尋找檔案
    • 兩者都不搜尋任何東西
  2. @src/main.py 在訊息中做什麼?

    • 建立新檔案
    • 告訴 Claude 讀取該特定檔案
    • 刪除該檔案
    • 執行該檔案
  3. Claude 應該使用哪個工具來修改現有檔案?

    • Read
    • Edit
    • Write
    • Bash
  4. True 或 False: Claude 會記住對話脈絡。

    • True
    • False
  5. 如何要求 Claude 找出所有測試檔案?

    • "搜尋測試"
    • "找出名稱中有 'test' 的檔案"
    • "Glob 搜尋測試檔案"
    • 以上皆可

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


總結

在本課程中,您學到了:

  • 專案脈絡 - Claude 維護程式庫的覺察
  • Grep - 搜尋檔案內容的模式
  • Glob - 依名稱模式尋找檔案
  • 檔案操作 - Read、Edit、Write 工具
  • @ 符號 - 直接參照特定檔案
  • 提問 - 獲得程式碼解釋和分析
  • 重構 - 使用 Claude 的協助改善程式碼結構

下一步

在**第 4 課:權限與安全**中,您將學到:

  • 為什麼有不同權限模式
  • 如何使用計畫模式
  • 在模式之間切換
  • 設定允許/拒絕的操作

進階閱讀


繼續至第 4 課:權限與安全