代码编写规范(后端)

代码编写规范(后端)

一,基础规范和定义

  1. 变量定义:代码中所有的变量为英文小驼峰 如$rejectLogsListArray,除非特别难翻译的词可以使用拼音代替,一律要求使用英文;
    为了提高代码可读性,变量长度尽量控制在1-5个单词,可使用缩写
    尽量避免使用data,tmp,array,a,b,xxx 这种无意义的变量
    尽量避免使用纯数字组成的无意义的变量

  2. 方法定义:代码中所有的方法名为英文小驼峰
    如public function reviewChapter{}
    私有方法,在方法名前可增加_表示此方法为私有
    单个方法长度尽量保持在50行以内,最多不能超过150行

  3. 常量定义
    常量一般定义内部常量,避免定义全局常量,如果实在需要定义全局常量,可以在.env文件中定义,并使用

  4. 类的定义
    类名以英文大驼峰定义
    原则上单个文件中有且只有一个类,且该类名和文件名一致

  5. 禁止使用魔法数字
    禁止在逻辑中使用常量数字,因为常量数字所表示的意义,在没有详细注释的情况下,难以阅读和理解
    如果需要使用数字,数值的代码逻辑部分,可以定义常量,再进行使用

二,代码编写规范

  1. 接口入参规范
    前端入参,尽量使用英文作为变量名
    前端接口入参一般定义为小写英文下划线连接,同数据库字段标准
    所有入参字段需要在controller层中明确,并验证类型和合法性,禁止使用在controller层未处理和验证的参数
    (禁止在其他地方使用底层方法直接获取参数)

  2. 接口返回值规范
    接口返回需要符合以下格式
    {
    “code”:1000, // 操作状态码1000表示正常返回,!=1000则表示发生了特殊情况需要弹出提示或者特殊处理相应的逻辑
    “message”:”ok”,//提示信息
    “data”:{} // data内放页面具体所需信息,使用类名作为属性名,多条(list)加上List后缀
    }

  3. 异常处理
    对于不可预知的错误可以直接抛出 throw new ErrorException 并传递错误码
    详情请参照错误码 ErrorCodeService

  4. 代码层级结构
    代码层级结构应该符合mvc原则,后端代码主要分层为3层
    controller层:处理参数的验证,入参处理,调用逻辑层service的方法,返回值的格式化
    service层:处理主要业务逻辑
    model层:处理数据对象,基本的数据计算,数据库调用,缓存调用

  5. 工具类
    用于存放日期处理,文档处理,格式转换,单位换算等
    详情参见UtilsService

  6. 注释
    注释用于解释程序逻辑,避免对单行代码进行中文翻译型的注释

三,数据库规范

  1. 数据库基本信息
    数据库使用mysql

新建表,均使用InnerDB存储引擎,除非大数量并不常使用的表,可使用MYISAM
新建表,必须增加表注释,字符编码使用utf8mb4格式

  1. 数据表表名
    表名以小写英文加下划线"_"组成,单词数量小于等于5

  2. 数据库字段

    1. 每张表必须有id字段,并设置为自增主键;
    2. 每张表必须有,created_at字段(记录创建时间),deleted_at字段(记录删除时间,未删除为0,默认0),int(11)类型;
    3. 字段名以小写英文加下划线"_"组成,单词数量小于等于3,尽量使用有明确意义的英文,避免使用缩写和拼音;
    4. 状态类的字段,如status,flag等,请使用tinyint;
    5. 字符串尽量使用varchar并且需要预估长度,长度应小于255;
    6. IP地址最好使用int类型;
    7. 固定长度的类型最好使用char,例如:邮编;
    8. 各个表中的关联字段名,尽量保持一致,如user_id
    9. 所有字段都需要有默认值,且不能设置为null
    10. 避免使用NULL字段(NULL字段很难查询优化、NULL字段的索引需要额外空间、NULL字段的复合索引无效);
    11. 少用text类型(尽量使用varchar代替text字段);
    12. 所有的表字段都需要有字段注释
  3. 数据库索引
    命名简洁明确,并有前缀表示索引类型idx uni
    例如:
    user_name字段的index索引应为idx_user_name;
    user_name字段的Unique唯一索引应为uni_user_name;
    正确使用最左匹配原则建立索引,避免重复索引

  4. 查询语句规范

    1. 不在数据库做运算,尽量把运算放到代码逻辑层面;
    2. cpu计算务必移至业务层;
    3. 控制列数量(字段少而精,字段数建议在20以内);
    4. select语句避免使用select * 请使用具体的字段,用多少字段查多少字段
    5. 尽量少用联合查询,将联合查询在代码逻辑层面实现,单条查询的效率永远是最高的
    6. 尽量避免全表扫描,请使用explain进行sql优化
    7. 根据查询创建必要的索引
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值