Vibe Coder
程式碼品質與 Linting:用 Ruff 讓 AI 寫的程式碼更好讀
程式碼品質有三個層次:能跑、能讀、能改。AI 幫你做到「能跑」很容易,但命名清楚、格式一致才能讓你三個月後還看得懂。用 Ruff 做 Linting 和格式化,搭配清楚的命名原則與 pre-commit 自動把關,就能讓 AI 生成的程式碼維持在能長期維護的品質。
程式碼品質與 Linting:用 Ruff 讓 AI 寫的程式碼更好讀
AI 生成的程式碼有時候命名很隨意、格式不一致,你需要能識別出來並且改正。這篇帶你用 Ruff 這套 Python 最快的 Linter,搭配清楚的命名原則和 pre-commit 自動把關,把「能跑」的程式碼變成「能讀、能改」的程式碼。
你將學到什麼
程式碼品質三層次
能跑、能讀、能改,AI 幫你做到第一層,剩下兩層要靠習慣。
Ruff 設定與指令
比 flake8 快一百倍的 Linter,一次設定存檔自動格式化。
命名原則
從模糊的 data、temp 到自我說明的 temperature,一張對照表看懂差在哪。
pre-commit 自動把關
設定一次,之後每次 commit 前自動跑 Ruff,不用手動記得檢查。
為什麼程式碼品質重要
程式碼品質有三個層次:
- 能跑(Functional):功能正確,最基本的要求。AI 幫你做到這層很容易。
- 能讀(Readable):命名清楚,結構整齊,邏輯流暢。這層讓你三個月後還能維護。
- 能改(Maintainable):模組化,低耦合,有測試。這層讓你加新功能不怕把舊的搞壞。
Ruff:Python 的最快 Linter
Ruff 是用 Rust 寫的 Python Linter,比 flake8 快一百倍,同時整合了格式化和 import 排序。
# pyproject.toml
[tool.ruff]
line-length = 88
target-version = "py311"
[tool.ruff.lint]
select = ["E", "F", "I", "UP"]
# E: PEP8 風格 F: 未使用變數等 I: import 排序 UP: 升級語法
[tool.ruff.format]
quote-style = "double"
# 檢查問題
ruff check .
# 自動修正(大部分問題)
ruff check . --fix
# 格式化程式碼
ruff format .
# VS Code / Cursor:存檔自動 Ruff
# 安裝 Ruff 擴充套件,settings.json 加入:
"[python]": {"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true}
命名原則:讓程式碼自我說明
| 情況 | 不好的命名 | 好的命名 |
|---|---|---|
| 變數 | x、temp、data | temperature、weather_data |
| 函式 | do_thing、process | get_weather_by_city |
| 布林值 | flag、status | is_authenticated、has_error |
| 常數 | n = 10 | MAX_RETRY_COUNT = 10 |
| 類別 | MyClass | WeatherQueryService |
Python 命名慣例(PEP 8):
| 類型 | 慣例 | 例子 |
|---|---|---|
| 變數、函式 | snake_case | user_id、get_weather |
| 類別 | PascalCase | WeatherService |
| 常數 | UPPER_SNAKE | API_BASE_URL |
| 私有 | 前綴底線 | _internal_cache |
程式碼審查的重點
審查 AI 生的程式碼時,用這個順序檢查:
- 邏輯正確性:它做了你要它做的事嗎?邊界情況有沒有處理?
- 命名清楚:變數和函式名稱能自我說明嗎?
- 錯誤處理:API 呼叫失敗、空值、型別錯誤,有沒有適當的處理?
- 重複程式碼:同樣的邏輯出現了幾次?可以抽成函式嗎?
- 資安:有沒有 SQL Injection、敏感資料外洩等問題?
pre-commit:存檔自動品質把關
.pre-commit-config.yaml
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.0
hooks:
- id: ruff
args: [--fix]
- id: ruff-format
pip install pre-commit
pre-commit install # 之後每次 git commit 自動跑
先設定,再依賴自己記得不要指望自己每次都記得手動跑 Ruff。設定好 pre-commit 之後,品質把關就變成自動發生的事,不需要靠意志力維持。
延伸學習
做出你的第一個 Skill
一場快閃直播的完整重製。從搞懂 Skill 的五個層級開始,帶你把一件你每天在做的重複工作,寫成一支 AI 真的會照做的 Skill ── 命名、description、輸入拆解、Workflow 訪談、Output 與 Checks,最後組成一份能通過格式檢查的 SKILL.md。
NT$ 999
寫給升國一的你的筆記術
寫給剛升上國中的你:筆記不是寫給老師看的,是寫給考前的自己看的。18 章 85 課圖文,從「為什麼要寫」講到七科各自怎麼記,附 78 份可以印出來寫的練習單,以及 80 課家長專區與 34 張三年筆記養成路徑圖。沒有閱讀期限,國一買、國三還在。
NT$ 3,599
常見問答
為什麼要在意程式碼品質,能跑不就好了?
能跑只是最基本的要求。命名清楚、結構整齊的程式碼,三個月後回來看能在三秒內理解;命名混亂的,三分鐘都理解不了,這直接影響你之後能不能安心加新功能。
Ruff 跟其他 Linter 有什麼不同?
Ruff 是用 Rust 寫的 Python Linter,比 flake8 快一百倍,同時整合了格式化和 import 排序,一套工具做完以前要裝好幾個套件才能做的事。
審查 AI 生的程式碼要照什麼順序檢查?
建議依序檢查邏輯正確性、命名是否清楚、錯誤處理是否完整、有沒有重複程式碼,最後是資安相關問題,例如 SQL Injection 或敏感資料外洩。
pre-commit 會不會讓 commit 變麻煩?
設定一次之後幾乎無感:commit 前自動跑 Ruff,有能自動修正的問題會直接修好,你只需要再 add 一次就能繼續 commit,反而省下手動檢查的時間。

