日常开发规范

news2024/9/28 1:15:32

日常开发规范

一.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,操作更方便哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2067090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宠物空气净化器不是智商税!希喂、352宠物空气净化器真实测评

前端时间我出差了&#xff0c;把小猫寄养在朋友家里&#xff0c;回来后去接它们&#xff0c;结果到朋友家差点没认出来...碰上换毛季猫咪疯狂脱毛&#xff0c;朋友没有及时清理&#xff0c;就全堆在身上了&#xff0c;简直是胖若两猫。到家后&#xff0c;我连忙用梳子把它身上的…

Wi-Fi发射功率简介

目录 一、概念 1.1 射频发射与组合功率 1.2 天线增益 1.3 信道影响 二、常用单位及转换 2.1 dB 与 dBm 2.2 dBi 与 dBd 三、发射功率 3.1 发射功率调节 3.1.1 TPC 3.2 国家码与信道功率 一、概念 ① 和 ⑦ 表示射频发送端处的功率,单位是 dBm。其中 ① 表示AP端的…

《通义千问AI落地—下》:WebSocket详解

一、前言 文本源自 微博客 且已获授权,请尊重版权。 《通义千问AI落地——下篇》如约而至。Websocket在这一类引用中,起到前后端通信的作用。因此,本文将介绍websocket在这类应用场景下的配置、使用、注意事项以及ws连接升级为wss连接等;如下图,本站已经使用了wss连接…

ssrf,csrf漏洞复现

印象深刻的csrf利用&#xff1a; 在phpwind下&#xff1a;漏洞点&#xff08;但是都是在后台的漏洞&#xff09; 代码追&#xff1a; task到unserialize&#xff0c;然后重写PwDelayRun的构造函数&#xff0c;给callback和args赋值&#xff0c;然后当程序执行结束&#xff0c…

请问lammps怎么做两种金属连接的原子浓度分布图??

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

未知单播泛洪原因

未知单播&#xff1a;交换机是收到数据包后&#xff0c;读取数据包的目的MAC&#xff0c;并查找自已的MAC表&#xff0c;查找目的MAC对应的端口&#xff0c;从而判断从哪个口端口转发出此数据包&#xff0c;若MAC表里没有此目的MAC&#xff0c;那对于此交换机来说就是未知单播&…

Day46 | 101孤岛的总面积 102沉没孤岛 103水流问题 104建造最大岛屿

语言 Java 101.孤岛的总面积 101. 孤岛的总面积 题目 题目描述 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域&#xff0c;且完全被水域单元格包围。孤岛是那些…

植物大战僵尸杂交版v2.3.7最新版本(附下载链接)

新版本更新啦&#xff01; B站游戏作者潜艇伟伟迷于8月19日更新了植物大战僵尸杂交版2.3.7版本&#xff01;&#xff01;&#xff01; v2.3.7版本更新内容&#xff1a; 游戏分辨率扩充&#xff0c;UI界面翻新&#xff0c;卡槽数量提升至16个&#xff0c;修复大量BUG&#xff0c…

网络协议与IO模型

1、说一说网络模型&#xff08;OSI、TCP/IP模型&#xff09; OSI采用了分层的结构化技术&#xff0c;共分七层&#xff0c; 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 。 Open System Interconnect 简称OSI&#xff0c;是国际标准化组织(ISO)和国际电报电…

【Windows脚本】如何测试远程主机某个端口是否开放?

概要 如何测试远程主机某个端口是否开放&#xff1f; 1、PowerShell脚本 使用Test-NetConnection 指令&#xff0c;命令如下。 Test-NetConnection RemoteIP -Port 80 -InformationLevel Detailed 2、tcping工具 下载地址&#xff1a;https://download.csdn.net/download/…

工具(1)查看YUV 图

#灵感# 没啥灵感&#xff0c;就是脑子越来越健忘&#xff0c;就啥都记一笔。 工具名字&#xff1a;YUVPlayer 操作流程&#xff1a; 1、打开YUVPlayer, 把YUV文件拖进来。 2、如果拖进来失败&#xff0c;需要先设置属性, 尤其是YUV类型。 3、成功打开图片后&#xff0c;如…

Linux批量验证代理IP的实用方法

在网络管理和优化过程中&#xff0c;批量验证代理IP的有效性是一个常见需求。无论是为了提高网络访问速度&#xff0c;还是为了确保代理IP的可用性&#xff0c;批量验证代理IP都是一项重要的任务。本文将详细介绍如何在Linux环境下批量验证代理IP&#xff0c;帮助你高效地管理和…

短剧小程序源码2023 短剧影视付费查看小视频会员收益系统全开源

本文来自&#xff1a;短剧小程序源码2023 短剧影视付费查看小视频会员收益系统全开源 - 源码1688 应用介绍 演示后台&#xff1a;http://duan.hengchuang.top/VwmRIfEYDH.php 后台账号&#xff1a;admin 后台密码&#xff1a;123456 功能介绍&#xff1a; 1&#xff0c;内容…

《白蛇:浮生》后劲不足,国漫败走2024暑期档

截止到8月19日中午&#xff0c;上映10天的动画电影《白蛇&#xff1a;浮生》票房终于突破3亿。 客观来说&#xff0c;3亿票房在今年暑期档不算差&#xff0c;但对于上映首日就拿到1.29亿票房的《白蛇&#xff1a;浮生》而言&#xff0c;后期票房走势确实没有达到预期&#xff…

4 nesjs IOC控制反转 DI依赖注入

在 NestJS 中&#xff0c;IOC&#xff08;控制反转&#xff09;和 DI&#xff08;依赖注入&#xff09;是核心概念&#xff0c;它们使得应用程序的模块化和解耦变得更加容易。 控制反转&#xff08;IOC&#xff0c;Inversion of Control&#xff09; 控制反转是一个设计原则&…

clickhouse中使用ReplicatedMergeTree表引擎数据去重问题

问题&#xff1a;使用ReplicatedMergeTree表引擎&#xff0c;该引擎逻辑上是不会对于主键相同的数据&#xff0c;进行去重合并操作。如果想要去重&#xff0c;可以使用ReplacingReplicatedMergeTree表引擎。然后使用ReplicatedMergeTree表引擎进行数据insert 插入数据&#xff…

数据防泄密之源代码防泄密的七大要则!

在数字化时代&#xff0c;源代码的安全保护对企业至关重要。它是企业创新和竞争力的核心&#xff0c;一旦泄露&#xff0c;可能会带来不可估量的损失。因此&#xff0c;选择一款合适的源代码加密软件成为了企业信息安全的关键。SDC沙盒防泄密软件以其独特的技术优势和全面的功能…

Windows 11 时间显示 到秒

效果 第一步 win R --> regedit 打开注册表 第二步 打开该路径HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced 第三步 然后新建一个DWORD&#xff08;32位&#xff09;值。 第四步 文件命名为ShowSecondsInSystemClock&#xff0c;双…

Flask+LayUI开发手记(二):LayUI弹出层表单的校验

LayUI里面layer.open()弹出层是一个十分常用也十分强大的功能&#xff0c;比如我们经常是先把记录以数据表单datatable方式显示出来&#xff0c;然后增删改查的功能就利用layer.open调取另一个form表单页面来进行数据编辑并提交数据完成数据表的更新操作。 同样&#xff0c;Lay…

【Dash】feffery_antd_components 简单入门示例

一、简单了解 feffery_antd_components 简称 fac &#xff0c;是一个基于 Ant Design 的 Dash 第三方组件&#xff0c;由Feffery 老师开源维护的 Python 网页开发组件库&#xff0c;它具有丰富的页面常用交互组件功能&#xff0c;使开发者可以使用纯Python的方式快速构建现代…