第三章:義大利麵條程式碼大掃除:讓 AI 幫你重構與拆分 React 元件

在 Vibe Coding 的過程中,我們常常為了求快,不斷請 AI 把新功能塞進同一個檔案裡。漸漸地,你的 page.tsx 可能會膨脹到 800 行甚至 1500 行以上。這時候,AI 開始變得越來越笨,甚至改了 A 壞了 B。

這種亂七八糟、互相牽連的程式碼,我們稱為「義大利麵條程式碼 (Spaghetti Code)」。本章將教你如何指揮 AI,安全地幫你進行「程式碼重構 (Refactoring)」與「元件拆分」。

為什麼檔案太大會讓 AI 變笨?

  1. Context Window 浪費:每次對話,AI 都需要閱讀整個檔案。1500 行的檔案會消耗大量 Token,導致 AI「忘記」你最初的需求。
  2. 修改風險極高:一個檔案裡塞滿了 Header, Sidebar, Main Content, Footer。請 AI 改 Footer 的時候,它可能不小心動到了 Header 的狀態 (State)。
  3. 人類看不懂:Vibe Coding 不代表人類不用看 Code。當檔案大到你無法掌握時,你就失去了對專案的控制權。

重構的黃金法則:單一職責原則 (SRP)

在請 AI 拆分元件前,你必須先在腦海中建立「單一職責」的概念。 一個 React 元件應該只負責「一件事情」。

例如,一個 PricingPage 不應該同時負責:

  • 取得資料庫的價格方案
  • 渲染方案卡片的 UI
  • 處理結帳按鈕的 Stripe API 邏輯
  • 渲染常見問題 (FAQ) 手風琴

它應該被拆分成:

  • PricingPage (只負責組合)
    • PricingCard (只負責渲染卡片 UI)
    • CheckoutButton (只負責金流邏輯)
    • FaqSection (只負責 FAQ 邏輯)

實戰:如何詠唱「拆分元件」的 Prompt

請不要直接對 AI 說:「幫我把這個檔案拆小一點」。這太模糊了,AI 可能會拆出讓你匪夷所思的結構。

請使用以下這個重構專用 Prompt 模板

[任務目標] 目前的 src/app/pricing/page.tsx 檔案太長了,我希望進行重構與元件拆分,以提升可維護性。

[拆分規劃] 請幫我將程式碼拆分成以下三個檔案:

  1. src/components/pricing/PricingCard.tsx:負責渲染單一方案卡片的 UI,需要接收 tier (方案資料) 作為 Props。
  2. src/components/pricing/FaqSection.tsx:負責渲染底部的常見問題,並包含手風琴的開關狀態 (useState)。
  3. src/app/pricing/page.tsx:保持為主頁面,負責引入上述兩個元件,並保留資料夾取的邏輯。

[執行要求]

  1. 請一步一步來,先提供 PricingCard.tsx 的完整程式碼。
  2. 確保 TypeScript 的 Interface / Type 定義正確匯出並共用。
  3. 確保原有的 Tailwind 樣式與動畫完全不變。

拆分過程中的地雷防範

當 AI 開始給你拆分後的程式碼時,請注意以下幾點:

1. Props 的傳遞 (Prop Drilling)

當你把元件拆出去後,原本在主頁面裡的變數(例如 const [isLoading, setIsLoading] = useState(false)),子元件會拿不到。AI 應該要透過 Props 把這些變數傳進去。如果 AI 漏掉了,請提醒它:「記得把 isLoading 作為 prop 傳給 PricingCard」。

2. 絕對路徑 vs 相對路徑

拆分到 src/components/ 後,原本檔案裡的 import 路徑可能會錯。 檢查 AI 寫的 import: ✅ import { AlertCircle } from "lucide-react";import { cn } from "@/lib/utils";import { cn } from "../../lib/utils"; (在 Next.js 中,盡量使用 @/ 絕對路徑)

3. 一次只做一件事

絕大規則:千萬不要在「重構」的同時「新增功能」! 如果你想把按鈕拆出去,順便加上 Loading 旋轉動畫,請分兩步做。 第一步:拆分。測試會不會動。 第二步:加動畫。 這能確保你隨時可以 Git Commit 退回安全點。

定期大掃除的好處

只要你養成習慣,當一個檔案超過 300 行時,就請 AI 幫你做一次「元件拆分」。你會發現:

  • AI 寫程式的速度變快了(因為 Token 變少了)。
  • Bug 變少了(因為狀態被隔離在各自的元件中)。
  • 你自己看 Code 的心情變好了。

這就是 Vibe Coding 能夠走得長遠、維護大型商業專案的終極秘訣!

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!