Java开发规范

1.接口命名规范–Restful API

原本格式是动词+资源+by+传参,后来进化为Restful API,思想是以资源为中心

动词用get,post,put,delete请求方法代替,by后面的名词用传参代替。 并且GET方法传参资源ID采用路径传参,除了资源ID外的GET传参统一采用query参数,而其他请求方法传参统一采用json参数。

原来
POST /getInfoByUserId
现在:
GET /user/{id}/info

另外:在嵌套资源的 URL 中使用关系

获取指定订单中所有商品列表。

GET  /order/{id}/products 

获取指定订单中所有指定商品信息。

GET  /order/{orderId}/product/{productId}

其他细节:

【1】连接中多个不可分割的单词,使用中划线拼接。

/user/verify-code

【2】参数使用驼峰拼写

/order/{productId}

【3】指向集合的复数名称

例如:获取所有用户列表接口。

/users

【4】如果有一个接口,并不是 CRUD 操作,这种情况可以使用动词。

例如:向用户发送邮件接口。

/user/{id}/send-mail

2.三层方法命名规范–具体参照阿里巴巴命名规范

基本格式:动词+资源+by+传参

3.领域模型命名规约

  1. 数据对象–表对应的对象

xxxDO,xxx 即为数据表名。

  1. 数据传输对象–一般用于返回数据封装成类

xxxDTO,xxx 为业务领域相关的名称

  1. 展示对象–一般用于接收的数据封装成类

xxxVO,xxx 一般为网页名称。

注意事项:

POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。

4.MybatisPlus条件构造器命名规范

动词+query/update…+Wrapper

5.Java代码中的空格–一般用IDEA格式化解决

java代码哪里需要空格?

  1. 在运算符两侧需要空格,例如:int result = a + b;
  2. 在逗号,分号,关键字后面需要空格 例如:String[] names = {"Alice", "Bob", "Charlie"}; 例如:for (int i = 0; i < 10; i++) { 例如:if (condition) {
  3. 在类名,方法名和左大括号之间需要空格 例如:public class MyClass { 例如:public void myMethod() {
  4. 在类型转换时,强制类型转换符号与类型之间需要空格,例如:(String) object
  5. 空实现接口或类不允许存在空格。
// 正例
public interface AdapterThreadPoolMonitor extends ThreadPoolMonitor {
}// 反例
public interface AdapterThreadPoolMonitor extends ThreadPoolMonitor {}

6.注释规范

【1】Class、Interface、Enum、@interface 等文件类型,类上注释仅需说明类的意图即可。不需要补充时间和创建人,因为往往开发代码的不止是一个人,容易造成信息干扰。需要的话,查看提交记录即可。

/*** 适配第三方框架的线程池*/
public interface ThreadPoolAdapter {}

【2】方法上需添加注释,并说明清楚方法的意图(接口实现类无需注释);必要时描述 @param @return

/*** 适配第三方框架的线程池*/
public interface ThreadPoolAdapter {/*** 修改框架线程池的核心参数** @param threadPoolBaseInfo  修改线程池的基础参数* @return  线程池核心参数修改结果*/boolean updateThreadPool(ThreadPoolBaseInfo threadPoolBaseInfo);
}

如果方法为内部引用方法,并且方法名称见名知意,无需方法注释。(私有方法尽量通过方法命名说明方法语义)

【3】方法内部的注释,应该新起一行,而不是跟在代码后面,除非是变量。

正例:
// 刷新动态线程池参数
refreshDynamicPool(parameter, executor);反例:
refreshDynamicPool(parameter, executor); // 刷新动态线程池参数

7.其他

【1】静态变量使用大写,多个单词使用下划线连接。示例:MESSAGE_CENTER_SEND_TYPR。

【2】捕获的异常名称命名为 ex ;捕获异常且不做任何事情,异常名称命名为 ignored。

【3】返回值变量使用 result 命名;循环中使用 each 命名循环变量;map 中使用 entry 代替 each。

result 命名示范:
private void parseDate(String data) {Result result = JSONUtil.parseObject(data, Result.class);return result;
}
或采用 result 为前缀:
private void parseDate(String data) {Result resultDate = JSONUtil.parseObject(data, Result.class);return resultDate;
}each 命名示范:
appNameLeaseMap.values().forEach(each -> appNameLeaseList.add(each));
或是 for 循环:
for (Lease<InstanceInfo> each : appNameLeaseMap.values()) {appNameLeaseList.add(each);
}

【4】业务系统中优先使用 Guava、HuTool、Common3 等工具类中的方法,不存在指定方法时再创建自定义工具类,禁止创建相同语义方法的工具类。

备注:定义组件项目时,尽量使用自定义工具类,避免因版本问题导致不确定的异常。

【5】空实现接口或类不允许存在空格。

// 正例
public interface AdapterThreadPoolMonitor extends ThreadPoolMonitor {
}// 反例
public interface AdapterThreadPoolMonitor extends ThreadPoolMonitor {}

【6】超过 3 层的 if-else 的逻辑判断代码可以使用卫语句、策略模式、 状态模式 等来实现,其中卫语句即代码逻辑先考虑失败、异常、中断、退出等直接返回的情况

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

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

相关文章

【智能算法应用】基于A星算法求解六边形栅格地图路径规划

目录 1.算法原理2.结果展示3.参考文献4.代码获取 1.算法原理 精准导航&#xff1a;用A*算法优化栅格地图的路径规划【附Matlab代码】 六边形栅格地图 分析一下地图&#xff1a; 六边形栅格地图上移动可以看做6领域运动&#xff0c;偶数列与奇数列移动方式有所差异&#xff0…

使用 Elasticsearch 调用 OpenAI 函数

作者&#xff1a;来自 Elastic Ashish Tiwari 介绍 OpenAI 中的函数调用是指 AI 模型与外部函数或 API 交互的能力&#xff0c;使它们能够执行文本生成之外的任务。此功能使模型能够通过调用预定义函数来执行代码、从数据库检索信息、与外部服务交互等。 该模型根据用户提示智…

连接·共享·成长:15大顶尖峰会热议AI,逾万商家聚焦实在Agent

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;和机器人流程自动化&#xff08;RPA&#xff09;正成为行业创新和效率提升的强大引擎。作为自动化领域的领航者&#xff0c;实在智能不仅在AI技术革新上保持领先地位&#xff0c;更通过一系列行业活动&…

[13] CUDA_Opencv联合编译过程

CUDA_Opencv联合编译过程 详细编译过程可见我之前的文章&#xff1a;Win10下OpencvCUDA联合编译详细教程&#xff08;版本455、460、470,亲测可用&#xff01;&#xff01;&#xff01;&#xff09;本文给出Windows\linux下的opencvcuda的编译总结&#xff0c;摘自 <基于GP…

[面试题]Java【虚拟机】

[面试题]Java【基础】[面试题]Java【虚拟机】 因为 Java 并发涉及到的内容会非常多&#xff0c;本面试题可能很难覆盖到所有的知识点&#xff0c;所以推荐 《深入拆解 Java 虚拟机》 。 走近 Java 什么是虚拟机&#xff1f; Java 虚拟机&#xff0c;是一个可以执行 Java 字…

Pygame的基本应用

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Pygame有很多模块&#xff0c;每个模块又有很多方法&#xff0c;在此不能够逐一讲解&#xff0c;所以&#xff0c;我们通过一个实例来学习Pygame&…

SpringBoot接入RS-232串口通讯实现数据交互

目录 一、什么是RS-232&#xff1f; 先看看硬件通讯接口长啥样 RS-232 二、方案一 1.前期准备 a.配置 RXTX 1&#xff09;下载 RXTX 包并解压 2&#xff09;拷贝动态库到对应的jdk目录下 Windows平台 Linux平台 3&#xff09;在工程根目录下创建 lib 文件夹&#x…

Whisper语音识别 -- 自回归解码分析

前言 Whisper 是由 OpenAI 开发的一种先进语音识别系统。它采用深度学习技术&#xff0c;能够高效、准确地将语音转换为文本。Whisper 支持多种语言和口音&#xff0c;并且在处理背景噪音和语音变异方面表现出色。其广泛应用于语音助手、翻译服务、字幕生成等领域&#xff0c;为…

unidbg讲解V1

前言 unidbg是什么? unidbg是一个Java项目,可以帮助我们去模拟一个安卓或IOS设备,用于去执行so文件中的算法,从而不需要再去逆向他内部的算法。最终会产出一个jar包,可以被python进行调用。 如何使用unidbg? 下载github上开源的项目:https://github.com/zhkl0228/un…

【因果推断python】32_合成控制2

目录 合成控制作为线性回归的一种实现​编辑 合成控制作为线性回归的一种实现 为了估计综合控制的治疗效果&#xff0c;我们将尝试构建一个类似于干预期之前的治疗单元的“假单元”。然后&#xff0c;我们将看到这个“假单位”在干预后的表现。合成控制和它所模仿的单位之间的…

OpenGauss常操作

OpenGauss官网已经有很详细的说明了,但是对于新手而言还有一些需要注意的地方; 安装 yum一键安装; yum -y install libaio-devel yum -y install readline-devel yum -y install libnsl 单独创建用户和组; groupadd dbgroup useradd -g dbgroup omm passwd omm 取消打开文…

关于学习Token、JWT、Cookie等验证授权方式的总结

目录 一、为什么Cookie无法防止CSRF攻击&#xff0c;而Token可以&#xff1f; 二、为什么无论采用Cookie-session的方式&#xff0c;还是Token&#xff08;JWT&#xff09;的方式&#xff0c;在一个浏览器里&#xff0c;同一个网站只能保证一个用户处于登录状态&#xff1f; …

韩顺平0基础学java——第22天

p441-459 异常exception 选中代码块&#xff0c;快捷键ctraltt6&#xff0c;即trt-catch 如果进行了异常处理&#xff0c;那么即使出现了异常&#xff0c;但是会继续执行 程序过程中发生的异常事件分为两大类&#xff1a; 异常体系图※ 常见的运行异常&#xff1a;类型转换…

vs2019 c++20规范 STL 库中头文件 <atomic> 源码注释及探讨几个知识点

&#xff08;1 探讨一&#xff09; 模板类 atomic 的继承关系与数据结构如下&#xff1a; (2 探讨二 ) 可见 atomic 的 fetch_xx 函数&#xff0c;返回的都是 atomic 中存储的旧值。测试如下&#xff1a; 谢谢

【MySQL】mysql中常见的内置函数(日期、字符串、数学函数)

文章目录 案例表日期函数字符串函数数学函数其他函数 案例表 emp students 表 exam_result 表 日期函数 注意current_time和now的区别 案例一&#xff1a; 创建一张表用来记录生日&#xff0c;表结构如下 添加日期&#xff1a; insert tmp (birthday) values (2003-01-3…

永磁同步电机滞环电流控制(PI双闭环)matlab仿真模型

微♥“电击小子程高兴的MATLAB小屋”获取模型 1.滞环电流控制的原理 将给定的电流信号与反馈的电流信号进行比较&#xff0c;然后控制它俩之间的差值稳定在一个滞环范围内&#xff0c;若超出范围&#xff0c;则进行相应的调节操作。 操作如下叙述&#xff1a;假设以三相中的A相…

unDraw —— 免费且可定制的插画库,为您的设计注入灵魂

&#x1f3a8; unDraw —— 免费且可定制的插画库&#xff0c;为您的设计注入灵魂 在寻找能够完美融入您品牌风格的插画吗&#xff1f;unDraw&#xff0c;一个提供大量免费插画资源的网站&#xff0c;可能是您的理想选择&#xff01; &#x1f310; 网站特色 免费且开源 unDraw…

项目太大导致报错:JavaScript堆内存已满

1.问题 启动一个Vue项目的时候遇到了如下的报错 Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 无效的标记压缩导致接近了堆上限&#xff0c;分配失败 - JavaScript内存不足 2.解决方法 我查阅了网上的资料&#xff0c;似乎…

udp协议下的socket函数

目录 1.网络协议 2.网络字节序 3.socket编译接口 4.sockaddr结构体 5.模拟实现 1.socket函数 2.bind函数&#xff08;绑定&#xff09; 1.讲解 1.如何快速的将 整数ip<->字符串 2.ip地址的注意事项 3.端口号的注意事项 3.recvfrom函数 4.sendto函数 5.代码呈…

不测评不知道,该这款主食冻干嚣张!PR、希喂、扑呀真实测评

主食冻干喂养越来越火了&#xff0c;除了知名的“四大金刚”K9、VE、SC、PR之外&#xff0c;也有像希喂、扑呀这类以营养、高肉含量为切入点的新锐品牌&#xff0c;各大猫粮商更是纷纷推出了自家的主食冻干产品。目前关于主食冻干的讨论也很多&#xff0c;但大多数还是以科普和…