代码编写规范后端
代码编写规范(后端)
代码编写规范(后端)
一,基础规范和定义
变量定义:代码中所有的变量为英文小驼峰 如$rejectLogsListArray,除非特别难翻译的词可以使用拼音代替,一律要求使用英文;
为了提高代码可读性,变量长度尽量控制在1-5个单词,可使用缩写
尽量避免使用data,tmp,array,a,b,xxx 这种无意义的变量
尽量避免使用纯数字组成的无意义的变量
方法定义:代码中所有的方法名为英文小驼峰
如public function reviewChapter{}
私有方法,在方法名前可增加_表示此方法为私有
单个方法长度尽量保持在50行以内,最多不能超过150行
常量定义
常量一般定义内部常量,避免定义全局常量,如果实在需要定义全局常量,可以在.env文件中定义,并使用
类的定义
类名以英文大驼峰定义
原则上单个文件中有且只有一个类,且该类名和文件名一致
禁止使用魔法数字
禁止在逻辑中使用常量数字,因为常量数字所表示的意义,在没有详细注释的情况下,难以阅读和理解
如果需要使用数字,数值的代码逻辑部分,可以定义常量,再进行使用
二,代码编写规范
接口入参规范
前端入参,尽量使用英文作为变量名
前端接口入参一般定义为小写英文下划线连接,同数据库字段标准
所有入参字段需要在controller层中明确,并验证类型和合法性,禁止使用在controller层未处理和验证的参数
(禁止在其他地方使用底层方法直接获取参数)
接口返回值规范
接口返回需要符合以下格式
{
“code”:1000, // 操作状态码1000表示正常返回,!=1000则表示发生了特殊情况需要弹出提示或者特殊处理相应的逻辑
“message”:”ok”,//提示信息
“data”:{} // data内放页面具体所需信息,使用类名作为属性名,多条(list)加上List后缀
}
异常处理
对于不可预知的错误可以直接抛出 throw new ErrorException 并传递错误码
详情请参照错误码 ErrorCodeService
代码层级结构
代码层级结构应该符合mvc原则,后端代码主要分层为3层
controller层:处理参数的验证,入参处理,调用逻辑层service的方法,返回值的格式化
service层:处理主要业务逻辑
model层:处理数据对象,基本的数据计算,数据库调用,缓存调用
工具类
用于存放日期处理,文档处理,格式转换,单位换算等
详情参见UtilsService
注释
注释用于解释程序逻辑,避免对单行代码进行中文翻译型的注释
三,数据库规范
数据库基本信息
数据库使用mysql
新建表,均使用InnerDB存储引擎,除非大数量并不常使用的表,可使用MYISAM
新建表,必须增加表注释,字符编码使用utf8mb4格式
数据表表名
表名以小写英文加下划线"_“组成,单词数量小于等于5
数据库字段
- 每张表必须有id字段,并设置为自增主键;
- 每张表必须有,created_at字段(记录创建时间),deleted_at字段(记录删除时间,未删除为0,默认0),int(11)类型;
- 字段名以小写英文加下划线”_“组成,单词数量小于等于3,尽量使用有明确意义的英文,避免使用缩写和拼音;
- 状态类的字段,如status,flag等,请使用tinyint;
- 字符串尽量使用varchar并且需要预估长度,长度应小于255;
- IP地址最好使用int类型;
- 固定长度的类型最好使用char,例如:邮编;
- 各个表中的关联字段名,尽量保持一致,如user_id
- 所有字段都需要有默认值,且不能设置为null
- 避免使用NULL字段(NULL字段很难查询优化、NULL字段的索引需要额外空间、NULL字段的复合索引无效);
- 少用text类型(尽量使用varchar代替text字段);
- 所有的表字段都需要有字段注释
数据库索引
命名简洁明确,并有前缀表示索引类型idx uni
例如:
user_name字段的index索引应为idx_user_name;
user_name字段的Unique唯一索引应为uni_user_name;
正确使用最左匹配原则建立索引,避免重复索引
查询语句规范
- 不在数据库做运算,尽量把运算放到代码逻辑层面;
- cpu计算务必移至业务层;
- 控制列数量(字段少而精,字段数建议在20以内);
- select语句避免使用select * 请使用具体的字段,用多少字段查多少字段
- 尽量少用联合查询,将联合查询在代码逻辑层面实现,单条查询的效率永远是最高的
- 尽量避免全表扫描,请使用explain进行sql优化
- 根据查询创建必要的索引