java编程规范
一、时间格式为什么有大写有小写呢?
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
为了区分月份和分钟,用大写M代表月份,小写m代表分钟
而大写的H代表24小时制,小写h代表12小时制
二、下面的程序判断等值的方式,使用那种最合适呢?
public class Hello {public static void main(String[] args) {String year = "2023";// 方式1System.out.println("2023".equals(year));// 方式2System.out.println(year.equals("2023"));}}
方式1是最合适的,当year为null值的时候,方式2就会报空指针异常,而方式1不会
public class Hello {public static void main(String[] args) {String year = null;// 方式1System.out.println("2023".equals(year));// 方式2System.out.println(year.equals("2023"));}}
三、编程相关的命名不单要求正确,还需要规范
1、命名可以使用ali / alibaba / taobao / cainiao / aliyun / youku / hangzhou 等国际通用的名称,但不应该使用niHao(你好)、youhui(优惠)等拼音,更不允许直接使用中文表示
2、规范使用驼峰命名,类名第一个字母要求大写,而方法名、变量名第一个字母要求小写,常量名要求全部大写,中间的单词用下划线分隔
3、包名统一使用小写,原则上只能是一个单词,例如一个包,com.wu.util,每个单词由点号分隔
public class Hello {private final static String HELLO_NAME = "helloName";private String helloName = "helloName";public void helloWorld(String value) {System.out.println("hello world!");}}
4、一些常见的命名规则:
1) 获取对象或属性的方法用get作前缀,如getName()
2) 设置对象或属性的方法用set作前缀,如setName()
3) 获取统计值的方法用count作前缀,如countMoney()
4) 插入的方法用save/insert作前缀,如insertStudentEntity()
5) 删除的方法用remove/delete作前缀,如deleteStudentEntity()
6) 修改的方法用update作前缀,如updateStudentEntity()
7) 判断的方法一般以is作为前缀,如isEmpty()
8) 数据对象:xxxDO,xxx即为数据表名。
9) 数据传输对象:xxxDTO,xxx为业务领域相关的名称。
10) 展示对象:xxxVO,xxx一般为网页名称。
11) POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。
四、使用浮点数的时候需要注意精度问题
1、在合适使用float或double的场景中,无论基本数据类型还是包装数据类型,都使用双精度浮点数即double或Double
因为float精度比较低,而且使用的时候不允许强制转换为double,使用的数字后面需要f,如1f、2f等等
2、浮点数不能直接使用 == 号或者equals()判断两个浮点数是否相等,因为浮点数采用“尾数+阶码”的编码方式来存储的,也就是说,二进制无法精确表示一个10进制的小数,因此有可能两个数理论上是相等的,但是用 == 号比较会返回false
如果要判断两个浮点数是否相等,需要确定一个精度,在这个精度内两个数相等的话则认为这两个浮点数是相等的
例如double的精度是1e-12
public class Hello {public static void main(String[] args) {Double d1 = 3.333333333333;Double d2 = 10/3.0;System.out.println(d1 == d2);System.out.println(Math.abs(d1 - d2) <= 1e-12);}}
3、如果对精度有更高的要求,可以选择使用BigDecimal类型,但需要注意不要使用new BigDecimal(double)的方式直接生成,这种方式存在丢失精度的风险。要使用BigDecimal.valueOf(double)的方式
import java.math.BigDecimal;public class Hello {public static void main(String[] args) {BigDecimal bigDecimal1 = new BigDecimal(3.33333333333333333);BigDecimal bigDecimal2 = BigDecimal.valueOf(3.33333333333333333);System.out.println(bigDecimal1);System.out.println(bigDecimal2);}}
五、禁止出现魔法值
魔法值指的就是让人无法理解含义的常量,首先看以下代码
public class Hello {public void haha(String value) {if ("0".equals(value)){// TODO} else if ("1".equals(value)) {// TODO} else {// TODO}}}
“0”和”1”就是魔法值,必须要联系上下文才能理解它的含义,在开发中应该避免这种写法,建议的写法是:
public class Hello {private final static String FEMALE = "0";private final static String MALE = "1";public void haha(String value) {if ("0".equals(value)){// TODO} else if ("1".equals(value)) {// TODO} else {// TODO}}}
这样就容易理解代码的含义了,大致的意思就是判断value的值到底是男性或者是女性
六、代码风格
1、使用的所有的运算符号如+、-、&&、==等符号,必须在两端加上一个空格
2、tap的进格应该是标准的四个空格
3、注释的双斜线与注释内容之间有且仅有一个空格
4、方法参数在定义和传入时,多个参数逗号后必须加空格。
5、if/for/while/switch/do 等保留字与括号之间都必须加空格。
public class Hello {// 注释前空一个空格public void haha(String s1, String s2, String s3){int value = 1;if (value == 1){for (int i = 0; i < 100; i++) {}} else if (value == 2) {} else {}}}
相关文章:

java编程规范
一、时间格式为什么有大写有小写呢? new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");为了区分月份和分钟,用大写M代表月份,小写m代表分钟 而大写的H代表24小时制,小写h代表12小时制 二、下面的程序判断等值的方式&…...
合宙Air724UG LuatOS-Air script lib API--sim
sim Table of Contents sim sim.getIccid() sim.getImsi() sim.getMcc() sim.getMnc() sim.getStatus() sim.setQueryNumber(flag) sim.getNumber() sim.setId(id, cbFnc) sim.getId() sim 模块功能:查询sim卡状态、iccid、imsi、mcc、mnc sim.getIccid() 获取sim卡…...

【网络基础实战之路】基于三个分公司的内网搭建并连接运营商的实战详解
系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS:本要求基于…...

(Python)Requests+Pytest+Allure接口自动化测试框架从0到1搭建
前言:本文主要介绍在企业使用Python搭建接口自动化测试框架,数据驱动读取excel表里的数据,和数据库方面的交互,包括关系型数据库Mysql和非关系型数据库MongDB,连接数据库,读取数据库中数据,最后…...

实现vuex数据持久化处理
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 前言: 方案一 localStorage 介绍 值 示例 JSON.stringify() 介绍 语法 参数 返…...
Vue-系统登录进入首页后禁用浏览器返回键
解决方法 mounted() {history.pushState(null, null, document.URL)window.addEventListener(popstate, this.goBack, false) }, destroyed() {// 清除popstate事件 否则会影响到其他页面window.removeEventListener(popstate, this.goBack, false) }, methods: {goBack() {hi…...

Hadoop理论及实践-HDFS的Namenode及Datanode(参考Hadoop官网)
HDFS有什么特点,被设计做什么 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。有一下几个特点: HDFS是一个高度容错性的系统,具有高容错、高可靠性、高扩展性的特点,适合部…...
第四十九天
●兼容性测试:主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行。 •兼容测试测什么? Android碎片化严重,每一款游戏/应用在上线之前,都会做一轮覆盖一定机型量的兼容性测试。 在产品面对海量用户之前࿰…...

ArcGIS Pro简介下载安装地址
ArcGIS Pro简介 ArcGIS Pro是一款功能强大的地理信息系统(GIS)软件,由Esri开发。它为用户提供了一种直观、灵活且高效的方式来处理、分析和可视化地理数据。ArcGIS Pro具有现代化的用户界面和工作流程,使用户能够更好地利用地理信…...

MySQL 存储过程、函数、触发器、事件
目录 存储过程 创建存储过程 调用存储过程 查看存储过程 删除存储过程 进阶 变量 if条件判断 传递参数 case结构 while循环 repeat结构 loop语句 leave语句 游标/光标 存储函数 触发器 创建触发器 删除触发器 查看触发器 事件 查看事件调度器是否开启…...
【LeetCode】121. 买卖股票的最佳时机 -
这里写自定义目录标题 2023-8-9 19:25:01 121. 买卖股票的最佳时机 2023-8-9 19:25:01 我也是一次性遍历。 自己感觉是用两个指针来做的。 第一天(x 1) 的时候就已经买入了,假定某y天 比第x天 便宜 或 相等,那么我就应当是第…...

解决Vue+Element-UI 进行From表单校验时出现了英文提示问题
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 问题描述 在使用form表单时,往往会对表单字段进行校验,字段为必填项时会添加required属性,此时自定义rules规则…...

cpolar内网穿透的安装
群晖6.X安装cpolar内网穿透 文章目录 群晖6.X安装cpolar内网穿透前言1. 下载cpolar的群晖套件1.1 打开群晖套件中心1.2 选择“手动安装”1.3 选择下载cpolar套件位置 2. 打开cpolar的Web-UI界面3. 注册会员 前言 随着硬件设备和软件技术的发展,以及数据量的发福暴涨…...

OPENCV C++(十)gramm矫正+直方图均衡化
两者都是只对单通道使用,对多通道的话 就需要分离通道处理再合并通道 两种方法,第一个要运算次数太多了,第二个只需要查表 伽马矫正函数,这里用第二种方法,且写法有点高级 int gammaCorrection(cv::Mat srcMat, cv::…...

并发——ThreadPoolExecutor 类简单介绍
文章目录 1 ThreadPoolExecutor 类分析2 推荐使用 ThreadPoolExecutor 构造函数创建线程池 线程池实现类 ThreadPoolExecutor 是 Executor 框架最核心的类。 1 ThreadPoolExecutor 类分析 ThreadPoolExecutor 类中提供的四个构造方法。我们来看最长的那个,其余三个…...

SharePoint 审核和监控工具
审核在顺利的 SharePoint 管理中起着重要作用,尤其是在满足法规遵从性和取证要求方面。为避免数据泄露,必须了解谁来自哪个组访问了哪个文档,以及谁创建或删除了网站或网站集。 审核 SharePoint 服务器 SharePoint采用率的提高导致企业在其…...

java+springboot+mysql法律咨询网
项目介绍: 使用javassmmysql开发的法律咨询网,系统包含超级管理员,系统管理员、用户角色,功能如下: 用户:主要是前台功能使用,包括注册、登录;查看法律领域;法律法规&a…...

无涯教程-Perl - getservbyport函数
描述 此功能转换协议PROTO的服务编号PORT,在标量context中返回服务名称,并在列表context中返回名称和相关信息- ($name,$aliases,$port_number,$protocol_name) 该调用基于/etc/services文件返回这些值。 语法 以下是此函数的简单语法- getservbyport PORT, PROTO返回值 …...

iOS开发-JsonModel的学习及使用
IOS JsonModel的学习及使用 当我们从服务端获取到json数据后的时候,我们需要在界面上展示或者保存起来,下面来看下直接通过NSDictionary取出数据的情况。 NSDictionary直接取出数据的诟病。 NSString *name [self.responseObj objectForKey:"nam…...
jquery 遍历所有元素
要遍历所有元素,您可以使用 jQuery 的 .each() 方法。以下是使用 .each() 方法来遍历所有元素的示例代码: $(selector).each(function() {// 在这里编写处理每个元素的代码// 使用 $(this) 来访问当前迭代的元素 });在上面的代码中,您需要将…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...