mirror of
https://github.com/awesome-skills/code-review-skill.git
synced 2026-03-22 10:28:31 +08:00
- 将 SKILL.md 从 1774 行精简到 ~180 行 - 新增 references/react.md:React 19、RSC、TanStack Query v5 - 新增 references/vue.md:Vue 3 Composition API - 新增 references/rust.md:所有权、unsafe、异步 - 新增 references/typescript.md:类型安全、async/await - 新增 references/python.md:常见陷阱 - 更新 README.md:说明按需加载机制 优化效果: - 初始加载:~40K tokens → ~4K tokens - 支持 Progressive Disclosure 按需加载
78 lines
1.6 KiB
Markdown
78 lines
1.6 KiB
Markdown
# Python Code Review Guide
|
||
|
||
> Python 代码审查指南,覆盖常见陷阱和最佳实践。
|
||
|
||
---
|
||
|
||
## 常见陷阱
|
||
|
||
### 可变默认参数
|
||
|
||
```python
|
||
# ❌ Mutable default arguments
|
||
def add_item(item, items=[]): # Bug! Shared across calls
|
||
items.append(item)
|
||
return items
|
||
|
||
# ✅ Use None as default
|
||
def add_item(item, items=None):
|
||
if items is None:
|
||
items = []
|
||
items.append(item)
|
||
return items
|
||
```
|
||
|
||
### 异常捕获过宽
|
||
|
||
```python
|
||
# ❌ Catching too broad
|
||
try:
|
||
result = risky_operation()
|
||
except: # Catches everything, even KeyboardInterrupt!
|
||
pass
|
||
|
||
# ✅ Catch specific exceptions
|
||
try:
|
||
result = risky_operation()
|
||
except ValueError as e:
|
||
logger.error(f"Invalid value: {e}")
|
||
raise
|
||
```
|
||
|
||
### 可变类属性
|
||
|
||
```python
|
||
# ❌ Using mutable class attributes
|
||
class User:
|
||
permissions = [] # Shared across all instances!
|
||
|
||
# ✅ Initialize in __init__
|
||
class User:
|
||
def __init__(self):
|
||
self.permissions = []
|
||
```
|
||
|
||
---
|
||
|
||
## Python Review Checklist
|
||
|
||
### 数据结构
|
||
- [ ] 没有使用可变默认参数(list、dict、set)
|
||
- [ ] 类属性不是可变对象
|
||
- [ ] 理解浅拷贝和深拷贝的区别
|
||
|
||
### 异常处理
|
||
- [ ] 捕获特定异常类型,不使用裸 `except:`
|
||
- [ ] 异常信息有意义,便于调试
|
||
- [ ] 必要时重新抛出异常(`raise`)
|
||
|
||
### 性能
|
||
- [ ] 大数据集使用生成器而非列表
|
||
- [ ] 避免循环中重复创建对象
|
||
- [ ] 使用 `collections` 模块的高效数据结构
|
||
|
||
### 代码风格
|
||
- [ ] 遵循 PEP 8 风格指南
|
||
- [ ] 使用类型注解(type hints)
|
||
- [ ] 函数和类有 docstring
|