日常开发规范

日常开发规范

一.git提交规范

开发代码之前,需有管理员通过系统新建功能分支,如feature/one,

此时开发人员方可拉取feature/one到本地进行开发,

开发人员在本地环境测试稳定后,方可由管理员通过系统发布到开发环境,系统自动合并到release/dev分支,

开发人员在开发环境测试稳定后,方可由管理员通过系统发布到测试环境,系统自动合并到release/test分支,

测试人员在测试环境测试稳定后,方可由管理员通过系统发布到稳定环境,系统自动合并到master;

在后续上线过程中,如果出现bug或新增问题,再管理员根据master分支新增新功能分支,如feature/two,重复以上流程

二.设计规范

一般模块设计或子系统设计应遵循需求分析-概要设计(主要包括用例图、流程图)-详细设计(主要包括活动图、时序图、数据库设计、接口设计、类图等)三大部分进行设计

三.代码规范

后端技术栈为springboot+mybatis,整体倡导除logback“零”xml配置,全注解进行使用,集成分页组件和swagger-ui,具体可参考后端代码模板,git地址: https://gitee.com/zwxu/backend-template

3.1代码风格规范

a.代码命名有意义

参考网站CODELF

b.代码需格式化

c.统一代码风格

层级名称

描述

controller

bean为vo   (相对阿里巴巴分层,没有TService即rpc服务)

service层(包含dao层和第三方服务封装)

bean为vo/dto  (相对阿里巴巴分层,Service更重,承担Manager层职责)

dao

bean为dto

注:每层都应该模块化,遵循单一职责原则,并按模块命名,除controller层外,都需要遵循开放闭合原则,面向接口编程;每层对应bean字段需有明确意义

d.统一返回

@PostMapping("/getInfo")



public ResponseEntity<Result> getInfo() {



 return ResponseEntity.ok(Result.success(null));



}

e.统一加代码注释

f.统一使用@Slf4j加日志

g.统一@lombok取代set/get等方法

h.统一每个模块都需要有对应单元测试类

i.统一常量/统一自定义异常(不要硬编码)

注:代码规范具体明细执行可参考4.公司java代码规范

j.保持方法简洁,职责单一,单个方法不能超过100行

3.2.并发编码规范

a.高并发时,同步调用应该去考量锁的性能损耗。
b.对多个资源、数据库表、对象同时加锁时,需要保持一致的加锁顺序,否则可能会造成死锁。
c.并发修改同一记录时,避免更新丢失,需要加锁。要么在应用层加锁,要么在缓存加锁(推荐使用),要么在数据库层使用乐观锁,使用 version 作为更新依据(不推荐适用)。
d.节省公共资源(多任务管理,线程管理)和方便并发控制时应考虑采用单例模式

3.3.日志规范

什么时候打印日志基本原则:

  1. 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。
  2. 当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支
  3. 经常以功能为核心进行开发,你应该在提交代码前,可以确定通过日志可以看到整个流程

基本格式(必须有含义/有关键信息/有参数化信息)

log.info("[模块名称]  具体动作  关键信息:{} 参数化信息:{}")

示例: log.info("【任务模块】  校验任务信息 任务id为:{} 任务信息:{}",taskId,taskReq)

注: 正常【模块名称/具体动作/参数化信息】是必选,关键信息是可选,但是大部分场景是需要关键信息串联整体流程

对于debug日志,必须判断是否为debug级别后,才进行使用,这个避免获取参数带来的开销

示例: logger.isDebugEnabled()

需日志级别进行DEBUG/INFO/WARN/ERROR分类

四.changlist规范

五.参考资料

1、阿里代码分层:

①开放接口层:可直接封装 Service 方法暴露成 RPC 接口;通过 Web 封装成 http 接口;进行网关安全控制、流量控制等。

②终端显示层:各个端的模板渲染并执行显示的层。当前主要是 velocity 渲染,JS 渲染,JSP 渲染,移动端展示等。

③Web 层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。

④Service 层:相对具体的业务逻辑服务层。

⑤Manager 层:通用业务处理层。

它有如下特征:

  • 对第三方平台封装的层,预处理返回结果及转化异常信息。
  • 对 Service 层通用能力的下沉,如缓存方案、中间件通用处理。
  • 与 DAO 层交互,对多个 DAO 的组合复用。

⑥DAO 层:数据访问层,与底层 MySQL、Oracle、Hbase 进行数据交互。

2、书籍:《代码整洁之美》pdf,可参考遵循优化代码风格

链接: 百度网盘 请输入提取码 提取码: jsyh 复制这段内容后打开百度网盘手机App,操作更方便哦

  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值