常用Java开发规范整理

常用Java开发规范整理

命名时

  • 接口类中的方法和属性不要加任何修饰符号( public 也不要加),保持代码的简洁性,并加上有效的 javadoc 注释
  • 代码中相同意义的概念的单词可能有多种,在业务中应该统一
  • 禁止中英文混合使用

写注释时

  • 注释不必多,在于精,关键不易懂的地方写注释
  • 对部分代码,可以通过封装一个方法,以方法名来代替注释,通过方法名去知道这段代码的意思
  • 平时一些开发中注释的代码,要及时清理,虽然这些注释不参与运行,但会污染我们读代码

方法调用时

  • 避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成
    本,直接用类名来访问即可。
  • 不能使用过时的类或方法
  • Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals

定义对象时

  • POJO 类属性必须使用包装数据类型
  • 定义 DO/DTO/VO 等 POJO 类时,不要设定任何属性默认值。
  • 构造方法、set方法,get方法里面禁止加入任何业务逻辑

处理异常时

  • 不要捕获 Java 类库中定义的继承自 RuntimeException 的运行时异常类,这类异常由程序员预检查来规避,而不是catch去处理
  • 不要大面积的去 try-catch,这是不负责任的表现。 catch 时请分清稳定代码和非稳
    定代码
  • 捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请
    将该异常抛给它的调用者
  • 不能在 finally 块中使用 return
  • 定义异常类时注意区分unchecked / checked 异常

创建数据表时

  • 使用0,1的概念表示yes,no,而不是字符
  • 表名不使用复数
  • 小数使用decimal类型,禁止使用double或者float,避免精度丢失。
  • 列的字符存储长度要根据实际情况而定,不能为了简单而随便写个固定的较大值。
  • 数据库字段应该有注释,字段变更注释也应该更新。

处理日志时

  • 日志需要使用占位符的形式,而不是字符串拼接
  • 日志打印应该清楚明白,什么功能在什么地方,做了什么事情,输入是什么?输出是什么?需要写清楚。一个流程下来,日志要提现这个流程。
  • 不要打印重复的日志,干扰排查。
  • 日志应该使用日志框架打印
  • 日志应该分级别打印,而不是全是info
  • 日志禁止使用中文,中文打印的日志部署到服务器后可能会出现乱码

使用集合时

  • ArrayList 的 subList 结果的ArrayList是一个内部类,使用的时候要注意。
  • list去重时,最好通过转set去重复,而不是通过遍历是否contain去remove
  • 创建list时,可以给定list的初始容量,这样在add的时候,可以减少扩容次数。

使用索引时

  • 常用的查询字段创建索引
  • 数据变动较大的表就不用加索引,因为数据变得导致b+树查询计算消耗性能
  • 建组合索引的时候,区分度最高的在最左边

写sql时

  • 禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。
  • 在代码中写分页查询逻辑时,若 count 为 0 应直接返回,避免执行后面的分页语句。
  • 在代码中写分页查询逻辑时,若 count 为 0 应直接返回,避免执行后面的分页语句。
  • in 操作能避免则避免,若实在避免不了,需要仔细评估 in 后边的集合元素数量,控
    制在 1000 个之内。
  • 在表查询中,一律不要使用 * 作为查询的字段列表
  • POJO 类的 boolean 属性不能加 is,而数据库字段必须加 is_
  • xml 配置中参数注意使用: #{}, #param# 不要使用${} 此种方式容易出现 SQL 注入
  • 不允许直接拿 HashMap 与 HashTable 作为查询结果集的输出。

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

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

相关文章

使用 OpenTelemetry 和 Golang

入门 在本文中,我将展示你需要配置和处理统计信息所需的基本代码。在这个简短的教程中,我们将使用 Opentelemetry 来集成我们的 Golang 代码,并且为了可视化,我们将使用 Jeager。 在开始之前,让我简要介绍一下什么是 …

go学习之json和单元测试知识

文章目录 一、json以及序列化1.概述2.json应用场景图3.json数据格式说明4.json的序列化1)介绍2)应用案例 5.json的反序列化1)介绍2)应用案例 二、单元测试1.引子2.单元测试-基本介绍3.代码实现4.单元测试的细节说明5.单元测试的综…

中国毫米波雷达产业分析4——毫米波雷达企业介绍

一、矽典微 (一)公司简介 矽典微致力于实现射频技术的智能化,专注于研发高性能无线技术相关芯片,产品广泛适用于毫米波传感器、下一代移动通信、卫星通信等无线领域。 整合自身在芯片、系统、软件、算法等领域的专业能力&#xf…

C++学不会?一篇文章带你快速入门

1. 命名空间 1.1 命名空间的概念 C命名空间是一种用于避免名称冲突的机制。它允许在多个文件中定义相同的函数、类或变量,而不会相互干扰。 1.2 命名空间的定义 namespace是命名空间的关键字,后面是命名空间的名字,然后后面一对 {},{}中即…

【论文速递】:老驾驶员轨迹数据中的异常行为检测

给定道路网络和一组轨迹数据,异常行为检测 (ABD) 问题是识别在行程中表现出明显方向偏差、急刹车和加速的驾驶员。ABD 问题在许多社会应用中都很重要,包括轻度认知障碍 (MCI) 检测和老年驾驶员的安全路线建…

物联网技术发展

▶1、物联网的发展 2005年,国际电信联盟(ITU)发布了《ITU互联网报告2005:物联网》报告,正式提出了物联网(IOT)的概念。ITU报告指出:无所不在的“物联网”通信时代即将来临,世界上所有的物体(从轮胎到牙刷、从房屋到纸巾)都可以通…

Redis未授权访问-CNVD-2019-21763复现

Redis未授权访问-CNVD-2019-21763复现 利用项目: https://github.com/vulhub/redis-rogue-getshell 解压后先进入到 RedisModulesSDK目录里面的exp目录下,make编译一下才会产生exp.so文件,后面再利用这个exp.so文件进行远程代码执行 需要p…

Python基础语法之学习字符串格式化

Python基础语法之学习字符串格式化 一、代码二、效果 一、代码 # 通过m.n控制 a 123 b 123.444 c 123.555 print("限制为5:%5d" % a) print("限制为2:%2d" % a) print("限制为5.2:%5.2f" % b) print("限制为5.2:%5.2f" % c)二、效…

c++的文件读写

#include<iostream> #include<string> //1&#xff1a;引入头文件 #include<fstream> using namespace std; //把程序中的信息输出到缓冲区&#xff0c;然后写到文件 void test01() {//2:定义流对象ofstream ofs;//3:打开文件&#xff0c;以写的方式打开&…

ubuntu离线安装包

方便快捷方式 查看依赖 apt-cache depends 包名(gcc或language-pack-zh-hans)下载deb及其依赖包 # 下载.deb包到指定目录 cd /var/cache/apt/archives apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-repl…

react中useState、useRef、变量之间的区别

函数组件有函数作用域&#xff0c;每次render时&#xff0c;声明的方法会生成新的引用&#xff0c;声明的普通变量会重新声明并赋值初始值&#xff0c;而useRef和useState会保留状态。 useState、useRef、变量的区别 1. useState 组件更新不会改变之前的状态&#xff0c;可以保…

高效解决在本地打开可视化服务器端的tensorboard

文章目录 问题解决方案 问题 由于连着远程服务器构建模型&#xff0c;但是想在本地可视化却做不到&#xff0c;不要想当然天真的以为CTRLC点击链接http://localhost:6006就真能在本地打开tensorboard。你电脑都没连接服务器&#xff0c;只是pycharm连上了而已 解决方案 你需要…

全汉电源SN生产日期解读

新买了一个全汉的电脑电源&#xff0c;SN&#xff1a;WZ3191900030&#xff0c;看了几次没想明白&#xff0c;最后估计SN是2023年19周这样来记录日期的。问了一下京东全汉客服&#xff0c;果然就是这样的。那大家如果在闲鱼上看到全汉电源&#xff0c;就知道它的生产日期了。

JS代码其实可以这样写

日常工作中&#xff0c;我确实经常去帮大家review代码&#xff0c;长期以来&#xff0c;我发现有些个功能函数&#xff0c;JS其实可以稍微调整一下&#xff0c;或者换个方式来处理&#xff0c;代码就会看起来更清晰&#xff0c;更简洁&#xff0c;甚至效率更高&#xff0c;主要…

MySQL之 InnoDB逻辑存储结构

InnoDB逻辑存储结构 InnoDB将所有数据都存放在表空间中&#xff0c;表空间又由段&#xff08;segment&#xff09;、区&#xff08;extent&#xff09;、页&#xff08;page&#xff09;组成。InnoDB存储引擎的逻辑存储结构大致如下图。下面我们就一个个来看看。 页&#xff08…

Vue3中快速Diff算法

在Vue3中&#xff0c;快速Diff算法主要用于优化虚拟DOM的更新过程&#xff0c;减少不必要的DOM操作&#xff0c;提高性能。以下是对Vue3源码中快速Diff算法的解读&#xff1a; 首先&#xff0c;我们需要引入Vue3的相关包&#xff1a; import { reactive, toRefs, watch } fro…

f-string字符串格式化方法

f-string f-string是一种在Python3.6版本中引入的新的字符串格式化方法。它允许在字符串中插入变量值或表达式的计算结果&#xff0c;使用一种简单的、直观的语法。 f-string的格式为f"字符串 {表达式/变量}"&#xff0c;其中大括号 {} 内可以是一个变量名、一个表…

[MTK]安卓8 ADB执行ota升级

需求 adb 推送update.zip进行安卓的OTA升级 环境 平台:mtk SDK:Android 8 命令方式 需要root adb root adb remount adb push update.zip /data/media/0/ adb shell uncrypt /data/media/0/update.zip /cache/recovery/block.map adb shell echo /data/media/0/update.zi…

智慧配电间(配电室智能监控)

智慧配电间是一种应用物联网、云计算、大数据等先进技术&#xff0c;对配电室进行智能化改造和升级&#xff0c;依托电易云-智慧电力物联网&#xff0c;实现电力设备的实时监控、智能控制和远程管理的解决方案。以下是智慧配电间的主要功能和特点&#xff1a; 实时监控与数据分…

【数组】-Lc1-两数之和

写在前面 最近想复习一下数据结构与算法相关的内容&#xff0c;找一些题来做一做。如有更好思路&#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找…