mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-02-06 14:43:08 +08:00
71 lines
1.3 KiB
Markdown
71 lines
1.3 KiB
Markdown
# 程式碼風格
|
|
|
|
## 不可變性(關鍵)
|
|
|
|
總是建立新物件,絕不變異:
|
|
|
|
```javascript
|
|
// 錯誤:變異
|
|
function updateUser(user, name) {
|
|
user.name = name // 變異!
|
|
return user
|
|
}
|
|
|
|
// 正確:不可變性
|
|
function updateUser(user, name) {
|
|
return {
|
|
...user,
|
|
name
|
|
}
|
|
}
|
|
```
|
|
|
|
## 檔案組織
|
|
|
|
多小檔案 > 少大檔案:
|
|
- 高內聚、低耦合
|
|
- 通常 200-400 行,最多 800 行
|
|
- 從大型元件中抽取工具
|
|
- 依功能/領域組織,而非依類型
|
|
|
|
## 錯誤處理
|
|
|
|
總是全面處理錯誤:
|
|
|
|
```typescript
|
|
try {
|
|
const result = await riskyOperation()
|
|
return result
|
|
} catch (error) {
|
|
console.error('Operation failed:', error)
|
|
throw new Error('Detailed user-friendly message')
|
|
}
|
|
```
|
|
|
|
## 輸入驗證
|
|
|
|
總是驗證使用者輸入:
|
|
|
|
```typescript
|
|
import { z } from 'zod'
|
|
|
|
const schema = z.object({
|
|
email: z.string().email(),
|
|
age: z.number().int().min(0).max(150)
|
|
})
|
|
|
|
const validated = schema.parse(input)
|
|
```
|
|
|
|
## 程式碼品質檢查清單
|
|
|
|
在標記工作完成前:
|
|
- [ ] 程式碼可讀且命名良好
|
|
- [ ] 函式小(<50 行)
|
|
- [ ] 檔案專注(<800 行)
|
|
- [ ] 沒有深層巢狀(>4 層)
|
|
- [ ] 適當的錯誤處理
|
|
- [ ] 沒有 console.log 陳述式
|
|
- [ ] 沒有寫死的值
|
|
- [ ] 沒有變異(使用不可變模式)
|