認知負擔 Code Review 工具。用認知負擔視角進行程式碼審查。用於: (1) 程式碼品質評估, (2) 命名品質檢查, (3) 複雜度熱點識別, (4) 重構建議
Scanned 2/10/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: cognitive-review
description: "認知負擔 Code Review 工具。用認知負擔視角進行程式碼審查。用於: (1) 程式碼品質評估, (2) 命名品質檢查, (3) 複雜度熱點識別, (4) 重構建議"
---
# 認知負擔 Code Review 工具
## 核心理念
> 好的程式碼不需要讀者額外的認知努力就能理解
Code Review 的目標不只是找出錯誤,更重要的是確保程式碼對未來的閱讀者友善。
---
## 審查維度
### 1. 變數狀態追蹤
**檢查問題**:這段程式碼需要閱讀者同時記住幾個變數的狀態?
| 變數數 | 評估 | 建議 |
|--------|------|------|
| 1-3 | 優良 | 維持 |
| 4-5 | 可接受 | 考慮提取函式 |
| > 5 | 需重構 | 拆分為更小的函式 |
### 2. 呼叫層級追蹤
**檢查問題**:理解這段程式碼需要追蹤幾層呼叫?
| 層級 | 評估 | 建議 |
|------|------|------|
| 1-2 | 優良 | 維持 |
| 3 | 可接受 | 考慮扁平化 |
| > 3 | 需重構 | 提取中間函式或使用組合 |
### 3. 命名品質
**檢查問題**:不看實作,能從名稱理解意圖嗎?
| 問題類型 | 範例 | 改善建議 |
|---------|------|---------|
| 縮寫不明 | `btn`, `mgr` | `button`, `manager` |
| 含義模糊 | `data`, `info` | 具體化:`userData`, `bookInfo` |
| 動作不清 | `handle()`, `process()` | `validateInput()`, `calculateTotal()` |
| 過長冗餘 | `getTheUserDataFromDatabase` | `fetchUser` |
### 4. 條件分支
**檢查問題**:需要考慮幾條執行路徑?
| 分支數 | 評估 | 建議 |
|--------|------|------|
| 1-2 | 優良 | 維持 |
| 3-4 | 可接受 | 考慮策略模式或早期返回 |
| > 4 | 需重構 | 使用策略模式或狀態模式 |
### 5. 函式長度
**檢查問題**:這個函式做了幾件事?
| 行數 | 評估 | 建議 |
|------|------|------|
| 5-10 | 優良 | 維持 |
| 11-20 | 可接受 | 考慮拆分 |
| > 20 | 需重構 | 必須拆分 |
### 6. 參數數量
**檢查問題**:呼叫者需要記住幾個參數的順序和意義?
| 參數數 | 評估 | 建議 |
|--------|------|------|
| 0-2 | 優良 | 維持 |
| 3 | 可接受 | 考慮參數物件 |
| > 3 | 需重構 | 使用參數物件或建造者模式 |
---
## 審查清單
### 函式層級
- [ ] 函式長度 <= 20 行
- [ ] 參數數量 <= 3
- [ ] 巢狀深度 <= 3
- [ ] 區域變數數 < 5
- [ ] 函式名稱是動詞片語
- [ ] 函式只做一件事
### 類別層級
- [ ] 類別方法數 <= 12
- [ ] 公開方法數 <= 5
- [ ] 類別依賴數 <= 5
- [ ] 類別名稱是名詞
- [ ] 單一責任明確
### 命名層級
- [ ] 無縮寫或僅使用業界通用縮寫
- [ ] 變數名稱是名詞或名詞片語
- [ ] 布林變數是 is/has/can 開頭
- [ ] 常數名稱全大寫底線分隔
- [ ] 不使用 data/info/value 等模糊詞
---
## 認知負擔熱點識別
### 常見熱點
| 熱點類型 | 識別方法 | 影響 |
|---------|---------|------|
| 長函式 | > 20 行 | 難以一次理解 |
| 深巢狀 | > 3 層縮排 | 上下文難追蹤 |
| 多參數 | > 3 個參數 | 呼叫時容易出錯 |
| 副作用 | 修改外部狀態 | 行為不可預測 |
| 隱藏依賴 | 內部 new 物件 | 難以測試和理解 |
### 熱點優先級
| 優先級 | 類型 | 處理方式 |
|--------|------|---------|
| P0 | 副作用 | 立即修復 |
| P1 | 深巢狀 | 本次 PR 修復 |
| P2 | 長函式 | 建立技術債 Ticket |
| P3 | 多參數 | 視情況處理 |
---
## 審查報告格式
```markdown
## 認知負擔 Code Review 報告
### 檔案: {檔案路徑}
### 整體評估
| 維度 | 評分 | 說明 |
|------|------|------|
| 變數管理 | {1-5} | {說明} |
| 呼叫層級 | {1-5} | {說明} |
| 命名品質 | {1-5} | {說明} |
| 函式設計 | {1-5} | {說明} |
| **總評** | **{1-5}** | **{說明}** |
### 熱點清單
| 行號 | 類型 | 問題 | 建議 | 優先級 |
|------|------|------|------|--------|
| {行} | {類型} | {問題} | {建議} | {P0-P3} |
### 命名問題
| 原名 | 問題 | 建議名稱 |
|------|------|---------|
| {原名} | {問題} | {建議} |
### 重構建議
1. **{建議標題}**
- 位置: {行號範圍}
- 問題: {問題描述}
- 方案: {重構方案}
- 預期效果: {效果描述}
### 優點
- {優點1}
- {優點2}
### 結論
- **可以合併**: {是/否/需修改後}
- **必須修改**: {列表}
- **建議修改**: {列表}
```
---
## 使用方式
### 審查單一檔案
```bash
/cognitive-review {檔案路徑}
```
### 審查 PR 變更
```bash
/cognitive-review pr {PR 編號}
```
### 快速掃描
```bash
/cognitive-review scan {目錄}
```
---
## 常見問題模式
### 模式 1:函式過長
**識別**:函式超過 20 行
**常見原因**:
- 混合多個責任
- 缺乏抽象層
**改善方法**:
1. 識別獨立的邏輯區塊
2. 提取為私有方法
3. 命名要說明「做什麼」
### 模式 2:深層巢狀
**識別**:超過 3 層縮排
**常見原因**:
- 多層條件判斷
- 迴圈內的條件
**改善方法**:
1. 使用早期返回(Guard Clause)
2. 提取內層邏輯為函式
3. 考慮策略模式
### 模式 3:模糊命名
**識別**:使用 data, info, value, result 等詞
**常見原因**:
- 趕時間隨意命名
- 不確定用途
**改善方法**:
1. 問「這個變數存放什麼?」
2. 用具體名詞回答
3. 加入領域詞彙
### 模式 4:隱藏副作用
**識別**:函式名稱是查詢,但會修改狀態
**常見原因**:
- 「順便」修改狀態
- 缺乏命令-查詢分離
**改善方法**:
1. 分離查詢和命令
2. 命名反映副作用
3. 減少副作用範圍
---
## 相關文件
- [認知負擔量化標準]($CLAUDE_PROJECT_DIR/.claude/skills/cognitive-load-assessment/thresholds.md)
- [認知負擔設計方法論]($CLAUDE_PROJECT_DIR/.claude/methodologies/cognitive-load-design-methodology.md)
- [自然語言程式設計方法論]($CLAUDE_PROJECT_DIR/.claude/methodologies/natural-language-programming-methodology.md)
- [程式碼品質門檻方法論]($CLAUDE_PROJECT_DIR/.claude/methodologies/code-smell-quality-gate-methodology.md)
---
**Last Updated**: 2026-01-23
**Version**: 1.0.0
No comments yet. Be the first to comment!