当前位置: 首页 > news >正文

开发命名规范

1项目命名规范

1、工程项目名,尽量想一些有意义、有传播价值的名称;比如星球、游戏、名人、名地名等;取名就跟给孩子取名一样,独特、有价值、有意义、好传播
2、所有的类都必须添加创建者和创建日期
3、所有代码:包括项目代码、测试代码、临时性代码、脚本统统加入Git仓库进行版本管理,避免误删除、误操作丢失
4、项目需要有单元测试,测试覆盖度50%,测试代码放到单独的src/test/java工程目录下,单测也要入Git仓库管理

2项目目录结构规范

项目名称-admin //web端服务接口(面向浏览器前端的后端接口服务)、定时任务等

项目名称-service //rpc微服务工程,

项目名称-api //终端api接口(面向外部接口,比如APP)

项目名称-common //公共模块

项目名称-web //vue前端工程

项目名称-client //给其它业务依赖参数,接口定义工程,feign接口调用

 

image.png

3.项目业务模块包命名  caes为公司英文简称,实际需求替换

com.caes.项目名.模块名.controller

com.caes.项目名.模块名.feign

com.caes.项目名.模块名.service

com.caes.项目名.模块名.dao

com.caes.项目名.模块名.entity

com.caes.项目名.模块名.vo

com.caes.项目名.模块名.dto

com.caes.项目名.模块名.param

com.caes.项目名.common.listener

com.caes.项目名.common.config

4代码命名规范

1、无特殊要求,后端项目一律采用以SpringBoot框架。

2、代码中的命名均不能以下划线或美元符号开始,更不允许直接使用中文的方式。代码中的命名避免使用拼音与英文混合的方式。

3、类名使用UpperCamelCase风格,必须遵从驼峰形式,但以下情形例外:DO / BO / DTO / VO / AO

4、方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式

5、常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚准确,细粒度,不要嫌名字长;比如MAXCOUNT适当细分为MAXXXXCOUNT,MAXYYY_COUNT

6、抽象类命名使用 Abstract 或 Base 开头;异常类命名使用Exception结尾;测试类命名以它要测试的类的名称开始,以Test结尾

7、POJO类中布尔类型的变量,都不要加is,否则部分第三方框架解析会引起序列化错误

8、包名统一使用小写,点分隔符之间有且仅有一个自然语义的词汇

9、杜绝不规范的简写,避免望文不知义;比如configure简写为config、cfg、conf都可以,con就不合理

10、如果模块、接口、类、方法使用了设计模式,在命名时体现出具体模式;比如OrderFactory,AgentProxy

11、枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开

12、领域模型命名规约:

数据对象:xxxPO,xxx即为数据表名, 对象属性和表字段对应;

数据传输对象:xxxDTO,xxx为业务领域相关的名称,前端向后端传递对象,FEIGN调用,及其他数据对象传输统一使用DTO后缀;

展示对象:xxxVO,xxx一般为view名称;

业务处理对象:xxxBO,xxx为业务领域相关的名称.

其它规范

1后端代码规范

后端开发必须安装Java阿里代码规范插件,并启用检查代码,对于不符合规范的拒绝提交。
IDEA安装该插件
打开IDEA,File-> Setteings->Plugins->Browse Repositories,在Browse Repositories搜索栏搜索Alibaba,然后安装Alibaba Java Coding Guidelines
下载本地zip文件,下载地址:Alibaba Java Coding Guidelines - IntelliJ IDEs Plugin | Marketplace
下载版本 Alibaba Java Coding Guidelines 2.1.1
打开IDEA,File->Settings->Plugin->Install plugin from disk,选择刚才自己下载插件zip包的地址

2日志规范

日志很重要,需要统一定义日志格式规范
1、必须要有日志、必须要有日志、必须要有日志
2、日志要能清晰反映程序运行状态、上下游链路调用处理过程、核心逻辑
3、日志必备字段:日志级别、时间戳、服务名、IP、调用方、TraceId、日志主体
4、谨慎记录日志,生产环境避免输出debug日志,有选择地输出 info 日志,注意日志输出量的问题,避免无意义的大段不可阅读的日志。大量地输出无效日志,不利于系统性能提升,也不利于快速定位错误点

3接口规范

接口设计原则

接口设计应立足于本服务自身,服务核心提供什么对外的能力,接口用于匹配自身的能力,接口设计以通用为准,避免被需求牵着走,提供一大堆极度相似的接口给维护带来困难。
接口设计需考虑安全问题及权限问题,接口设计需避免可遍历的访问
接口的入参必须检查及有效性验证,非法参数必须拒绝,并返回相应错误信息
部分接口,需有防重限制,访问量限制,验证码限制等,避免被滥刷,造成资损

接口规范参考:《RestfulL API规范》

4数据库规范

数据库开发规范参考:《MYSQL数据库涉及规范》

5前端开发规范

1、无特殊要求,前端项目一律采用基于 @caes/caes-frontwork前端框架。

2、项目名称全部采用小写,以下划线或者短横线分割。如official-website,目录命名全部采用小写,以短横线分割。有复数结构时,要采用复数命名法。

3、详细规范遵循: 《WEB端编码规范》

相关文章:

开发命名规范

1项目命名规范 1、工程项目名,尽量想一些有意义、有传播价值的名称;比如星球、游戏、名人、名地名等;取名就跟给孩子取名一样,独特、有价值、有意义、好传播 2、所有的类都必须添加创建者和创建日期 3、所有代码:包括…...

12. Redis分布式高可用集群搭建

文章目录 Redis分布式高可用集群搭建一、redis集群有三种方式:1. 主从模式2. 哨兵3. 集群(master-cluster) 二、基于centos7操作系统操做1. 关闭防火墙,三台机器都执行2. hostname修改,三台机器都执行,这一步是为了在内…...

【微信小程序篇】-请求封装

最近自己在尝试使用AIGC写一个小程序,页面、样式、包括交互函数AIGC都能够帮我完成(不过这里有一点问题AIGC的上下文关联性还是有限制,会经常出现对于需求理解跑偏情况,需要不断的重复强调,并纠正错误,才能得到你想要的…...

区块链-Web3.0-什么是Web3.0?

一、什么是Web 3.0 Web 3.0,也被称为“去中心化Web”或“智能Web”,是互联网的下一代,它使用了分布式系统技术、区块链技术和智能合约等新型技术,旨在构建一个更加去中心化、安全、透明和智能的互联网。Web 3.0 可以带来更广泛的…...

动手学深度学习(三)线性神经网络—softmax回归

分类任务是对离散变量预测,通过比较分类的概率来判断预测的结果。 softmax回归和线性回归一样也是将输入特征与权重做线性叠加,但是softmax回归的输出值个数等于标签中的类别数,这样就可以用于预测分类问题。 分类问题和线性回归的区别&#…...

ios swift alert 自定义弹框 点击半透明部分弹框消失

文章目录 1.BaseAlertVC2.BindFrameNumAlertVC 1.BaseAlertVC import UIKitclass BaseAlertVC: GLBaseViewController {let centerView UIView()override func viewDidLoad() {super.viewDidLoad()view.backgroundColor UIColor(displayP3Red: 0, green: 0, blue: 0, alpha:…...

HCIP STP(生成树)

目录 一、STP概述 二、生成树协议原理 三、802.1D生成树 四、STP的配置BPDU 1、配置BPDU的报文格式 2、配置BPDU的工作过程 3、TCN BPDU 4、TCN BPDU的工作过程 五、STP角色选举 1、根网桥选举 2、根端口选举 3、指定端口选举 4、非指定端口选举 六、STP的接口状…...

【Unity开发必备】100多个 Unity 学习网址 资源 收藏整理大全【持续更新】

Unity 相关网站整理大全 众所周知,工欲善其事必先利其器,有一个好的工具可以让我们事半功倍,有一个好用的网站更是如此! 但是好用的网站真的太多了,收藏夹都满满的(但是几乎没打开用过😁)。 所以本文是对…...

Alpine Ridge控制器使其具备多种使用模式 - 英特尔发布雷电3接口:竟和USB Type-C统一了

同时又因为这建立在Type-C的基础上,雷电3也将利用现有的标准Type-C线缆引入有源支持。当使用Type-C的线缆时,雷电的速度就降到了20Gbps全双工——这与普通的Type-C的带宽相同——这是为了成本牺牲了一些带宽。可以比较一下,Type-C线的成本只有…...

容器——2.Collection 子接口之 List

文章目录 2.1. Arraylist 和 Vector 的区别?2.2. Arraylist 与 LinkedList 区别?2.2.1. 补充内容:双向链表和双向循环链表2.2.2. 补充内容:RandomAccess 接口 2.3 ArrayList 的扩容机制 2.1. Arraylist 和 Vector 的区别? ArrayList 是 List 的主要实现类,底层使…...

【工作记录】docker安装gitlab、重置密码@20230809

前言 本文记录下基于docker安装gitlab并重置管理员密码的过程。 作为记录的同时也希望能帮助到需要的朋友们。 搭建过程 1. 准备好docker环境并启动docker [rootslave-node1 docker-gitlab]# docker version Client:Version: 18.06.1-ceAPI version: 1.38…...

数据挖掘的基本概念和大数据的特点

数据挖掘是指从大量数据中提取有价值的信息或模式的过程。它通常使用计算机技术来分析数据,并利用统计学、机器学习、人工智能等方法来发现数据中的隐藏规律、趋势和关联性。 数据挖掘的基本概念包括以下几个方面: 数据预处理:对原始数据进行…...

LabVIEW开发分段反射器测试台

LabVIEW开发分段反射器测试台 随着对太空的观察需求越来越远,而不是当前技术(如哈勃望远镜)所能达到的,有必要增加太空望远镜主镜的尺寸。但是,增加主镜像的大小时存在几个问题。随着反射镜尺寸的增加,制造…...

二级python和二级c哪个简单,二级c语言和二级python

大家好,小编为大家解答二级c语言和二级office一起报可以吗的问题。很多人还不知道计算机二级c语言和python哪个好考,现在让我们一起来看看吧! 介绍Python有很多库和使用Qt编写的接口,这自然创建c调用Python的需求。一路摸索,充满艰辛的添加头…...

E: Package ‘curl‘ has no installation candidate/ E:软件包没有可用的安装源

解决方案: 访问etc/apt/source.list 修改或者添加安装源 不用版本的Linux 有不同的配置比如我的是Debian 12 其他版本的去搜索引擎搜索即可 vim /etc/apt/source.list 改成修改或添加 // 以下是官方示例 deb http://deb.debian.org/debian bookworm main non-…...

代理模式及常见的3种代理类型对比

代理模式及常见的3种代理类型对比 代理模式代理模式分类静态代理JDK动态代理CGLIB动态代理Fastclass机制 三种代理方式之间对比常见问题 代理模式 代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可…...

8.6 校招 内推 面经

绿泡泡: neituijunsir 交流裙,内推/实习/校招汇总表格 1、面经 | 车载测试-23 面经 | 车载测试-23 2、校招 | 荣耀2024届全球校园招聘启动(内推) 校招 | 荣耀2024届全球校园招聘启动(内推) 3、校招 |…...

【大数据之Flume】七、Flume进阶之自定义Sink

(1)概述:   Sink 不断地轮询 Channel 中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个 Flume Agent。 Sink 是完全事务性的。在从 Channel 批量删除数据之前,每个 Sink 用 Chan…...

vue对于时间的处理

2023-08-05 11:25:45 假如这个就是我们要传的时间字符串 比如今天是2023-08-05(同一天):现在把这个时间字符串传入到 formatDate()这个方法,就会给你返回 11:25 比如今天是2023-08-06(前一天&a…...

Apache DolphinScheduler 3.1.8 版本发布,修复 SeaTunnel 相关 Bug

近日,Apache DolphinScheduler 发布了 3.1.8 版本。此版本主要基于 3.1.7 版本进行了 bug 修复,共计修复 16 个 bug, 1 个 doc, 2 个 chore。 其中修复了以下几个较为重要的问题: 修复在构建 SeaTunnel 任务节点的参数时错误的判断条件修复 …...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...