Python Code Review 检查事项
一、审查目标
代码可读性检查
代码组织结构和风格一致性检查
代码最佳实践检查和推广
静态代码分析工具(pylint/flake8等), 或者Pycharm等提示的警告必须检查并修复
二、代码审查重点
代码风格
是否符合PEP 8规范
命名是否规范且有意义
代码格式是否一致
代码质量
是否有适当的错误处理
是否有充分的测试覆盖
是否有必要的文档注释
是否存在代码重复
业务逻辑
业务逻辑是否正确
是否考虑了边界情况
是否有性能问题
是否有安全隐患
一、Python PEP8 代码规范(重点)
1.1 代码布局
缩进使用4个空格(不使用Tab)
每行最大长度限制在79个字符(文档字符串/注释)或88个字符(代码)
顶层函数和类定义之间空两行
类中的方法定义之间空一行
函数内逻辑块之间空一行
括号内的参数不要有空格
逗号、冒号、分号前不要有空格
操作符两边要有空格:
x = 1
不要在行尾加空格
文件必须使用UTF-8编码
文件要以一个空行结束
1.2 命名规范
1 | # 包名和模块名:简短的、全小写的名字 |
1.3 导入规范
1 | # 1. 标准库导入 |
1.4 字符串规范
1 | # 字符串引号使用 |
二、Python实践规范(重点)
2.1 基本设计规范
2.1.1 函数定义
函数应该做一件事,并且做好这件事
函数的参数最好少于5个
函数长度最好不要超过50行
函数应该有清晰的输入和输出
1 | def process_data(data, type, validate=True, user=None, logger=None): |
1 |
|
1 | # 推荐2: 使用**kwargs |
2.1.2 类型注解
1 | from typing import List, Optional, Dict |
2.1.3 类的设计规范
遵循单一职责原则(SRP)
使用封装隐藏实现细节
提供清晰的公共接口
合理使用继承和组合
1 | # 好的示例:职责单一,封装良好 |
2.1.4 接口设计规范
1 | from abc import ABC, abstractmethod |
2.2 最佳实践
2.2.1 枚举类型的最佳实践
1 | from enum import Enum, auto |
2.2.2 保持函数抽象层次一致
1 | # 不好的示例:混合了不同抽象层次 |
2.2.3 避免复杂的条件表达式
1 | # 不好的示例:混合了不同抽象层次 |
2.2.4 命令查询分离(CQS)原则
1 | # 不好的示例:混合命令和查询 |
2.2.5 保持单一职责
1 | # 不好的示例:一个函数做多件事 |
2.3 错误处理规范
2.3.1 异常处理基本原则
1 | # 不推荐:捕获所有异常 |
2.3.2 异常处理最佳实践
1 | # 1. 使用上下文管理器自动处理资源 |
2.3.3 自定义异常层次结构
1 | class BusinessError(Exception): |
2.4 性能优化规范
2.4.1 数据结构使用
1 | # 1. 使用集合进行成员检查 |
2.4.2 循环优化
1 | # 1. 列表推导式与生成器表达式 |
2.4.3 字符串操作优化
1 | # 1. 字符串拼接 |
三、其他规范
3.1 测试规范
3.1.1 测试原则
测试应该是独立的
测试应该是可重复的
测试应该是简单的
测试应该是有意义的
3.1.2 测试工具
pytest: 单元测试框架
unittest: 标准库测试框架
3.2 文档规范
3.2.1 代码注释
1 | # 1. 函数文档 |
3.3 安全规范
3.3.1 输入验证
1 | def process_user_input(user_input: str) -> str: |
3.3.2 SQL注入防护
1 | # 不推荐 |