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 的逻辑判断代码可以使用卫语句、策略模式、 状态模式 等来实现,其中卫语句即代码逻辑先考虑失败、异常、中断、退出等直接返回的情况

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

区间合并——Acwing.803区间合并

区间合并 定义 区间合并是指将一组有重叠或相邻的区间合并成一个或多个更大的区间。 运用情况 图像处理&#xff1a;在图像的区域分析中&#xff0c;可能需要将相邻的具有相似特征的区域进行合并。时间区间处理&#xff1a;比如将多个连续时间段进行合并。行程规划&#xf…

nodejs湖北省智慧乡村旅游平台-计算机毕业设计源码00232

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;旅游行业当然也不能排除在外。智慧乡村旅游平台是以实际运用为开发背景&#xff0c;运用软件工程开发方法&#xff0c;采…

探索JavaScript逆向工程与风控等级

探索JavaScript逆向工程与风控等级 在当今的网络安全领域&#xff0c;JavaScript逆向工程&#xff08;简称JS逆向&#xff09;已成为许多开发者和安全专家关注的焦点。JS逆向主要涉及对JavaScript代码的分析与理解&#xff0c;以发现其内部逻辑、数据流及潜在漏洞。这种技术常用…

【GIS】全球范围气象站点的逐年平均气温数据(1929-2023年)

数据简介&#xff1a;气象数据包括气象站点温度、湿度、光照等等。提供自1929-2023年以来的全球逐年平均气温数据气象数据下载。数据源为NCDC&#xff08;美国国家气候数据中心&#xff0c;National Climatic Data Center&#xff09;&#xff0c;隶属于NOAA&#xff08;美国国…

软件测试之购物车的用例设计

功能 正向case&#xff1a; 1、商品添加到购物车->选中添加的商品->点击结算->支付成功&#xff0c;验证购物车中订单是否清楚&#xff1b; 2、购物车中搜索商品&#xff0c;能够查询到对应的商品信息&#xff1b; 3、选中不同商家的商品&#xff0c;购物车中商品按照…

springboot热贡文化旅游APP的设计与实现-计算机毕业设计源码69932

摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存…

bugku---misc---赛博朋克

1、下载附件解压之后是一个txt文本&#xff0c;查看文本的时候看到头部有NG的字样 2、把txt改为png后缀得到一张图片 3、binwalk没发现奇怪的地方&#xff0c;分离出来还是图片 4、stegslove分析&#xff0c;切换图片没有发现奇怪地方 5、将通道rgb置为0。出现了flag但是flag不…

Gi标签管理

文章目录 前言理解标签创建标签操作标签总结 前言 理解标签 标签&#xff0c;可以理解为对某次commit的一次标识&#xff0c;相当于起起了一个别名。 例如&#xff0c;在项目发布某个版本时候&#xff0c;针对最后一次commit起一个v1.0这样的标签来标识里程碑的意义。 这有什…

6.13.1 使用残差神经网络堆叠集成进行乳腺肿块分类和诊断的综合框架

计算机辅助诊断 (CAD) 系统需要将肿瘤检测、分割和分类的自动化阶段按顺序集成到一个框架中&#xff0c;以协助放射科医生做出最终诊断决定。 介绍了使用堆叠的残差神经网络 (ResNet) 模型&#xff08;即 ResNet50V2、ResNet101V2 和 ResNet152V2&#xff09;进行乳腺肿块分类…

郑州企业水污染防治乙级资质申请,时长预估

针对郑州企业水污染防治乙级资质申请&#xff0c;时长预估如下&#xff1a; 一、前期准备阶段 时间预估&#xff1a;约1-2个月 了解并熟悉最新的水污染防治乙级资质申请政策和标准。评估企业在技术人员配置、过往业绩、管理制度等方面的现状&#xff0c;确定是否满足申请条件。…

景芯SoC A72的时钟树分析

innovus的ctslog中的Clock DAG信息可以报出来CTS主要运行步骤的关键信息&#xff0c;比如clustering&#xff0c;balancing做完后的clock tree的长度&#xff0c;clock tree上所用的buffer、inverter&#xff0c;icg cell数量&#xff0c;clock skew等信息。我们以景芯SoC A72 …

美创科技入选“2024网络安全提供商创新排行榜”

近日&#xff0c;DBC德本咨询公布了“2024网络安全提供商创新排行榜”&#xff0c;美创科技凭借近20年的数据安全创新耕耘&#xff0c;荣誉上榜。 此次&#xff0c;与360、华为、腾讯等互联网、网络安全头部厂商并肩上榜&#xff0c;是行业对美创的再次认可。 数据安全的发展离…

Ubuntu 24.04 屏蔽snap包

Ubuntu 24.04 屏蔽snap包 屏蔽 这里所说的屏蔽指的是&#xff1a;禁止sudo apt install firefox时安装snap版本的包。 如需卸载snap&#xff0c;请使用关键词搜索。 命令行 cat <<EOF | sudo tee /etc/apt/preferences.d/snap-apps-disable Package: chromium* firef…

Typora 破解、激活!亲测有效!2024 最新激活方法

Typora 破解、激活&#xff01;亲测有效&#xff01;2024 最新激活方法 Typora是一款简单易用的Markdown编辑器。 Markdown是一种可以使用普通文本编辑器编写的标记语言&#xff0c;通过简单的标记语法&#xff0c;它可以使普通文本内容具有一定的格式&#xff0c;其目标是实现…

vite工程化搭建vue项目之自动按需导入

背景 当我们在使用vue3组合式开发的时候&#xff0c;大多数情况下我们的代码可能是这样的 <script setup lang"ts"> import { ref, reactive, toRefs, onMounted, computed } from vue; defineProps({}); </script><template><div></di…

BigDecimal的这四个大坑,你都知道吗?

BigDecimal是Java中的一个类&#xff0c;提供了更精确的数字运算&#xff0c;在金融场景中经常使用到。在使用BigDecimal的时候一定要注意&#xff0c;否则可能会付出惨重的代价。 第一&#xff1a;初始化的坑 BigDecimal a new BigDecimal(0.01); BigDecimal b new BigDec…

计算机毕业设计 | SpringBoot宠物医院管理 宠物商城购物系统(附源码)

写在前面 Le Dao宠物医院管理系统是一个超大型的&#xff0c;完成度很高的&#xff0c;集宠物医疗、宠物美容、宠物交易、宠物周边等各种功能于一身的&#xff0c;权限涵盖普通用户、医生、化验师、美容师、仓库主管、采购员等多种角色于一体的大型宠物医疗&#xff0c;购物系…

Conda安装

conda可以做到不同项目就用不同虚拟环境,这样就能做到每个项目的依赖包都是相互独立 一、windows Download Success | Anaconda 环境变量 二、nano 本次安装Archiconda的外部python版本为python3.7.1

适配器模式(AdapterPattern)

文章目录 1.适配器模式定义2.UML类图3.实现代码 1.适配器模式定义 使接口不兼容的对象能够相互合作 2.UML类图 目标角色&#xff08;Target&#xff09;&#xff1a;定义Client使用的与特定领域相关的接口。客户角色&#xff08;Client&#xff09;&#xff1a;与符合Targe…

从零开始搭建Electron项目(二)之例程解析

本专栏&#xff0c;前面学习了怎么下载例程并运行。 这里解析例程的构成 从零开始搭建Electron项目之运行例程-CSDN博客文章浏览阅读22次。最好的学习方式就是&#xff1a;给一段能够运行的代码示例。本文给出了例程资源&#xff0c;以及运行的步骤。在国内开发electron有一点特…