Skip to content

代码审查

🔍 代码质量检查

场景:检查代码问题和改进建议

你: 帮我审查这段代码:

```python
def get_data(lst):
    result = []
    for i in range(len(lst)):
        if lst[i] > 0:
            result.append(lst[i] * 2)
    return result

傻妞: 代码审查结果:

发现的问题:

  1. ⚠️ 性能问题

    • 使用 range(len(lst)) 不 Pythonic
    • 建议:直接遍历列表
  2. ⚠️ 命名不规范

    • 函数名太通用
    • 建议:更具体的名字,如 filter_positive_double
  3. ℹ️ 缺少文档

    • 没有函数说明
    • 没有参数说明

改进版本:

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)