代码审查
🔍 代码质量检查
场景:检查代码问题和改进建议
你: 帮我审查这段代码:
```python
def get_data(lst):
result = []
for i in range(len(lst)):
if lst[i] > 0:
result.append(lst[i] * 2)
return result傻妞: 代码审查结果:
发现的问题:
⚠️ 性能问题
- 使用 range(len(lst)) 不 Pythonic
- 建议:直接遍历列表
⚠️ 命名不规范
- 函数名太通用
- 建议:更具体的名字,如 filter_positive_double
ℹ️ 缺少文档
- 没有函数说明
- 没有参数说明
改进版本:
python
def filter_positive_double(numbers):
"""
过滤正数并翻倍
Args:
numbers: 数字列表
Returns:
正数翻倍后的列表
"""
return [n * 2 for n in numbers if n > 0]改进点: ✓ 使用列表推导式(更 Pythonic) ✓ 更清晰的命名 ✓ 添加了文档字符串 ✓ 更简洁高效
## 安全检查
### 场景:检查代码安全问题你: 这段代码有安全问题吗?
python
def execute_query(user_input):
query = f"SELECT * FROM users WHERE name = '{user_input}'"
return db.execute(query)傻妞: 🚨 发现严重安全问题!
SQL 注入漏洞:
- 用户输入直接拼接到 SQL 语句
- 攻击者可以输入:
' OR '1'='1 - 导致查询所有用户数据
安全版本:
python
def execute_query(user_input):
query = "SELECT * FROM users WHERE name = ?"
return db.execute(query, (user_input,))安全改进: ✓ 使用参数化查询 ✓ 防止 SQL 注入 ✓ 用户输入被正确转义
其他建议:
- 添加输入验证
- 使用 ORM(如 SQLAlchemy)
- 记录查询日志
---
[上一篇:代码编写](./coding.md) | [返回目录](./) | 下一篇:[调试助手](./debugging.md)