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 {}}}

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

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

相关文章

并发——synchronized 关键字

文章目录 1.说一说自己对于 synchronized 关键字的了解2. 说说自己是怎么使用 synchronized 关键字3. 构造方法可以使用 synchronized 关键字修饰么&#xff1f;4. 讲一下 synchronized 关键字的底层原理4.1. synchronized 同步语句块的情况4.2. synchronized 修饰方法的的情况…

错误: XXXAdapter不是抽象的, 并且未覆盖Adapter中的抽象方法onBindViewHolder(ViewHolder,int)

一、问题描述 在学习Android可侧滑删除的RecyclerView的时候&#xff0c;遇到了下面的报错 错误: SwipeDelAdapter不是抽象的, 并且未覆盖Adapter中的抽象方法onBindViewHolder(ViewHolder,int) public class SwipeDelAdapter extends RecyclerView.Adapter { ^ 在上面的…

怎么做思维导图?试试这种绘制方法

怎么做思维导图&#xff1f;思维导图是一种非常实用的工具&#xff0c;可以帮助我们更好地整理思路、总结知识和规划方案。但是传统的手绘或电脑软件绘制思维导图的方法需要一定的时间和技能&#xff0c;对于想要快速制作思维导图的人来说可能不太方便。下面就给大家介绍一种在…

提升客户满意度的创意项目管理软件推荐!

发现功能强大的工作管理软件&#xff0c;让创意大放异彩。将您团队的愿景变成引人注目的项目。 一、交付总是令人印象深刻的工作 Zoho Projects的创意项目管理软件可帮助您和您的团队在一个地方监督多个项目。使用我们的内置管理工具和模板&#xff0c;花更少的时间在管理上&a…

ffmpeg源码编译成功,但是引用生成的静态库(.a)报错,报错位置在xxx_list.c,报错信息为某变量未定义

背景&#xff1a;本文是对上一个文章的补充&#xff0c;在源码编译之前&#xff0c;项目是有完整的ffmpeg编译脚本的&#xff0c;只不过新增了断点调试ffmpeg&#xff0c;所以产生的上面的文章&#xff0c;也就是说&#xff0c;我在用make编译成功后&#xff0c;再去做的源码编…

内生安全构建数据存储

一、数据安全成为防护核心&#xff0c;存储安全防护不容有失 1、数据作为企业的核心资产亟需重点保护&#xff0c;数据安全已成网络空间防护核心 2、国家高度重视关键信息基础设施的数据安全&#xff0c;存储安全已成为审核重点 二、存储安全是数据安全的关键一环&#xff0c;应…

电商数据搬运工具:电商数据API接口,轻松搬运淘宝京东拼多多百万商品

随着电商行业的发展&#xff0c;越来越多的商家开始选择在线销售渠道&#xff0c;而电商平台也随之崛起。很多商家都是同时在多个电商平台有店铺&#xff0c;为了方便商家管理和维护店铺&#xff0c;商家 需要在多平台直接实现数据同步和数据搬运。 一、电商数据搬运的概念 电…

自动化处理,web自动化测试处理多窗口+切换iframe框架页总结(超细整理)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 web 自动化之处理…

MySQL的第一篇文章——了解数据库、简单的SQL语句

目录 学习目标 第一章 介绍数据库 1. 数据库概述 2. MySQL概述 第二章 MySQL的使用 1. MySQL服务的启动 2. 客户端连接MySQL 2.1 命令行客户端 第三章 SQL的介绍 1. 什么是SQL 2. SQL的分类 3. MySQL的语法规范和要求 第四章 DDL操作数据库 1. 创建数据库 2. 查…

RIFF WAVE 格式解析

一、综述 WAVE文件作为多媒体中使用的声波文件格式之一&#xff0c;它是以RIFF格式为标准的。 RIFF是英文Resource Interchange File Format的缩写&#xff0c;每个WAVE文件的头四个 字节便是“RIFF”。 WAVE文件是由若干个Chunk组成的。按照在文件中的出现位置包括&am…

机器学习、深度学习项目开发业务数据场景梳理汇总记录二

本文的主要作用是对历史项目开发过程中接触到的业务数据进行整体的汇总梳理&#xff0c;文章会随着项目的开发推进不断更新。 这里是续文&#xff0c;因为CSDN单篇文章内容太大的话就会崩溃的&#xff0c;别问我怎么知道的&#xff0c;问就是血泪教训&#xff0c;辛辛苦苦写了一…

【QT】 QT开发PDF阅读器

很高兴在雪易的CSDN遇见你 &#xff0c;给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT开发PDF阅读器技术&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起进步&#xff01; 你的点…