2021-04-15

一、PE8基本规范

	建议修改在使用的 IDE 中修改 PEP8 的每行字数不超79字符规范,可修改为 Django 建议的 119 字符
  1. 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格式化代码
    
    ↓ 下面为:格式化前和后的对比,格式化后会自动空格、分行
    

    在这里插入图片描述
    在这里插入图片描述

  2. 补充:

    转发自:https://wenku.baidu.com/view/b741887629160b4e767f5acfa1c7aa00b52a9d08.html

  3. 前端编码规范:

    转发自:https://blog.csdn.net/qq_33591055/article/details/99581791

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值