一、PE8基本规范
建议修改在使用的 IDE 中修改 PEP8 的每行字数不超79字符规范,可修改为 Django 建议的 119 字符
-
python编码规范:
(一)代码编码:
1、国际惯例,文件编码和 Python 编码格式全部为 utf-8 ,例如:在 Python 代码的开头,要统一加上 # -- coding: utf-8 --。 2、Python 代码中,非 ascii 字符的字符串,请需添加u前缀 3、若出现 Python编 码问题,可按照以下操作尝试解决:
import sys reload(sys) sys.setdefaultencoding('utf-8')
(二)命名规范:
1、包名、模块名、局部变量名、函数名
全小写+下划线式驼峰 示例:this_is_var
2、全局变量
全大写+下划线式驼峰 示例:GLOBAL_VAR
3、类名
首字母大写式驼峰 示例:ClassName()
4、变量名命名
尽量体现变量的数据类型和具体意义
注:
变量名、类名取名必须有意义,严禁用单字母 变量名不要用系统关键字,如 dir type str等等
建议:
bool变量一般加上前缀 is_ 如:is_success
(三)、import 顺序:
1、标准库 2、第三方库 3、项目本身 (之间用空行分隔)
(四)、models 内部定义顺序:
All database fields Custom manager attributes class Meta def (str) def save() def get_absolute_url() Any custom methods
(五)、异常捕获处理原则:
尽量只包含容易出错的位置,不要把整个函数 try catch 对于不会出现问题的代码,就不要再用 try catch了 只捕获有意义,能显示处理的异常 能通过代码逻辑处理的部分,就不要用 try catch 异常忽略,一般情况下异常需要被捕获并处理,但有些情况下异常可被忽略,只需要用 log 记录即可, 可参考一下代码:
def ignored(): try: yield except Exceptions as e: logger.warning(e) pass
(六)、return early原则
提前判断并 return,减少代码层级,增强代码可读性(简单逻辑往前放)
if not condition: return # a lot if code
(七)、Fat model, thin view
逻辑代码和业务代码解耦分离,功能性函数以及对数据库的操作定义写在 models 里面, 业务逻辑写在 view 里面。
(八)、权限校验装饰器异常抛出问题
建议权限不足时直接抛出异常,可以使用 django 自带的:
from django.core.exceptions import PermissionDenied # 权限不足时抛出异常 PermissionDenied,之后应该返回什么样的页面由 handler 或者中间件去处理
(九)、分 method 获取 request 参数问题
一般可以分method 获取request参数,这样能够使代码更可读,且之后修改 method 时不必每个参数都修改
args = request.GET if request.method == "GET" else request.POST business_name = args.get('business_name', '') template_name = args.get('template_name', '')
(十)、使用数字、常量表示状态
两种的话改为 true/false,多种改为 enum 可读性更好
def enum(**enums): return type("Enum", (), enums) StatusEnum = enum( SUCCESS=True, FAIL=False, )
(十一)、其他注意问题
1、【必须】去除代码中的 print,否则导致正式和测试环境 uwsgi 输出大量信息 2、逻辑块空行分隔 3、变量和其使用尽量放到一起 4、【必须】 import过长,要放在多行的时候,使用 from xxx import(a, b, c),不要用 \ 换行 5、Django Model 定义的 choices 直接在定义在类里面
(十二)、严重警告
写完 .py文件,上传前必须ctrl+L格式化代码 ↓ 下面为:格式化前和后的对比,格式化后会自动空格、分行
-
补充:
转发自:https://wenku.baidu.com/view/b741887629160b4e767f5acfa1c7aa00b52a9d08.html
-
前端编码规范:
转发自:https://blog.youkuaiyun.com/qq_33591055/article/details/99581791