python 编码规范
PE8基本规范:
建议修改在使⽤的 IDE 中修改 PEP8 的每⾏字数不超79字符规范,可修改为 Django 建议的 119 字符
⼀、python编码规范:
(⼀)代码编码:
1、国际惯例,⽂件编码和 Python 编码格式全部为 utf-8 ,例如:在 Python 代码的开头,要统⼀加上 # -- coding: utf-8 --。
2、Python 代码中,⾮ ascii 字符的字符串,请需添加u前缀
3、若出现 Python编 码问题,可按照以下操作尝试解决:
(⼆)命名规范: 1、包名、模块名、局部变量名、函数名
2、全局变量
3、类名
4、变量名命名
注:
建议:
(三)、import 顺序:
(四)、models 内部定义顺序:import sys reload(sys)sys.setdefaultencoding('utf-8')
1
2
3 全⼩写+下划线式驼峰 ⽰例:this_is_var 1全⼤写+下划线式驼峰 ⽰例:GLOBAL_VAR 1⾸字母⼤写式驼峰 ⽰例:ClassName()
1尽量体现变量的数据类型和具体意义1
变量名、类名取名必须有意义,严禁⽤单字母变量名不要⽤系统关键字,如 dir type str 等等12
bool 变量⼀般加上前缀 is_ 如:is_success 11、标准库 2、第三⽅库 3、项⽬本⾝(之间⽤空⾏分隔)
源代码设计笔记手机数据恢复
1
2
(五)、异常捕获处理原则:
尽量只包含容易出错的位置,不要把整个函数 try catch
对于不会出现问题的代码,就不要再⽤ try catch了
只捕获有意义,能显⽰处理的异常
能通过代码逻辑处理的部分,就不要⽤ try catch
异常忽略,⼀般情况下异常需要被捕获并处理,但有些情况下异常可被忽略,只需要⽤ log 记录即可,可参考⼀下代码:
(六)、return early原则
提前判断并 return,减少代码层级,增强代码可读性(简单逻辑往前放)
(七)、Fat model, thin view
逻辑代码和业务代码解耦分离,功能性函数以及对数据库的操作定义写在 models ⾥⾯,业务逻辑写在 view ⾥⾯。
(⼋)、权限校验装饰器异常抛出问题
建议权限不⾜时直接抛出异常,可以使⽤ django ⾃带的:
权限不⾜时抛出异常 PermissionDenied,之后应该返回什么样的页⾯由 handler 或者中间件去处理
(九)、分 method 获取 request 参数问题
⼀般可以分method 获取request参数,这样能够使代码更可读,且之后修改 method 时不必每个参数都修改
(⼗)、使⽤数字、常量表⽰状态
两种的话改为 true/false,多种改为 enum 可读性更好All database fields Custom manager attributes class Meta def (str)def save()def get_absolute_url()Any custom methods
1
2
3
python基础代码注释4
5
67def ignored(): try: yield except Exceptions as e: logger.warning(e) pass 1
2
3
4
5
6if not condition: return # a lot if code
1
xceptions import PermissionDenied
1args = request.GET hod == "GET" else request.POST business_name = ('business_name', '')template_name = ('template_name', '')
1
2
3
(⼗⼀)、其他注意问题fetching content
⼆、前端编码规范:openstack虚拟化平台
(⼀):命名规则
1、类的基础命名⽅式:“项⽬英⽂简写-当前页-页⾯内容块”如 .ijobs-index-box。
2、Id 的基础命名⽅式:语义化,并使⽤下滑杠连接,如步骤名称可命名为 #step_name
3、Javascript 变量命名⽅式:按照变量类型的⾸个字母为前缀,使⽤驼峰命名法;
例⼦:
三、⽇志规范:
(⼆)、⽇志输出格式:
四、代码提交规范
每次代码提交必须有备注说明,注明本次提交做了哪些修改
commit 分类:def enum(**enums): return type("Enum", (), enums)StatusEnum = enum( SUCCESS=True, FAIL=False,)
1
2
3
4
5
6
71、【必须】去除代码中的 print ,否则导致正式和测试环境 uwsgi 输出⼤量信息2、逻辑块空⾏分隔3、变量和其使⽤尽量放到⼀起4、【必须】 import 过长,要放在多⾏的时候,使⽤ from xxx import (a, b, c ),不要⽤ \ 换⾏5、Django Model 定义的 choices 直接在定义在类⾥⾯
1
2
3
4
5var aName = ['zhangsan','lizi','zhaowu']; //Array 数组var oBtn = ElementById('btn'); //Object 对象function fnName(){}; //Function 函数var nAge = 25; //Integer(int) 整型var sWebURL="www.wangyingran"; //String 字符串
1
2
3
4
5(⼀)⽇志输出级别:1、Error :系统异常,影响⽤户使⽤,必须通知到开发者及时修复。2、Warning :系统异常,不影响⽤户使⽤,但有异常需要跟进修复。3、Info :系统流⽔⽇志或⽇常记录,不做通知配置。
1
2
3
451、⽇志需要包含当前函数名,⽅便查和定位。2、重要操作流⽔直接记录数据库,可以保存较长时间。3、错误⽇志要⽅便定位问题,建议记录当前参数以及上下⽂变量。
1
2
3bugfix: -------- 线上功能 bug sprintfix: ----- 未上线代码修改 (功能模块未上线部分bug )minor: --------- 不重要的修改(换⾏,拼写错误等)feature: ----- 新功能说明
1
2
3
4
五、接⼝规范
Api 的 method:
接⼝返回内容
接⼝返回内容开发建议直接参考蓝鲸 apigateway 规范,返回的内容中包含 result code data message request_id 这⼏个字段
接⼝返回Status Code
接⼝数据验证
数据检验逻辑"应当"和业务逻辑分离,这样做的好处:
代码逻辑更加清晰
数据校验逻辑(可能)可以复⽤
分离⽅案:
代码注释
Python 代码注释 ⽅法必须使⽤标注注释,如果是公有⽅法或对外提供的 API 相关⽅法,则最好给出使⽤样例。如: Module注释:在开头要加⼊对该模块的注释。如: 普通代码注释应该以‘#’和单个空格开始。
如果有需要调整或者需要优化的地⽅,可以使⽤ #TODO 这⾥是注释内容”进⾏注释,Api 的 method ,要根据实际请求的类型,查询⼀定要⽤ get ,不能随意指定 method 。具体可以参考⽂档 《RESTful Web Services Cookbook-cn.pdf 》 。
建立学生表的insert触发器1
2**建议充分利⽤ HTTP Status Code 作为响应结果的基本状态码,基本状态码不能区分的 status ,再⽤响应 body 中"约定"的 code 进⾏补充http 状态码详细说明请参考: /wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81**
1
2
3
41)form-data/url-params :Django-Form 2)Json :Json-schema
1
2
⽅法的返回,如果数据结构⽐较复杂,则必须要对返回结果的每个属性做解释。
前端代码注释
Html 注释:
css 注释 内容⽐较少是可以只在顶部加注释,内容⽐较多时在尾部加结束标签/* 注释内容 end */
Js 注释 Js注释同上,函数如果有参数,建议简单备注⼀下参数的内容和类型。
⽂件或包的引⽤
Python 代码: 模块或包的引⼊最好使⽤完整路径,即使是同⼀个包下的相互引⽤,也建议使⽤完整路径。 这样⽐较⽅便代码阅读,同时若后续需修改为相对路径也很简单。
前端页⾯: 在页⾯中引⽤ css 和 js、或配置 url 路径时,必须使⽤“绝对路径”,⽽不要使⽤‘…/’,‘./’等相对路径的引⽤⽅式格式:'#'+单个空格+'TODO'+单个空格+注释内容。
1<!-- 容器 --><div class=“container”>...<!-- ⽤户名 --><div id=“user_name”>...</div><!-- /⽤户名 -->...</div><!-- /容器 -->
1
2
3
4
56
7
8
9
10
11/* 新建任务 start */.new-task{}/* 新建任务名 */.task-name{color:#333;}/* 新建任务时间 */.task-created-time{background:url(img/clock.png) no-repeat;}/* 新建任务 end */
1
2
3
4
5
6
7
>截取字符串最后三个字符
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论