河北盛储科技股份有限公司-技术团队

常用Java编码规范总结

一、命名 1.类名、方法名、参数名、成员变量、局部变量都统一使用如lowerCamelCase的驼峰形式。 2.常量名全部大写。 3.枚举类成员名称全部大写。 二、常量定义

常用Java编码规范总结

一、命名

1.类名、方法名、参数名、成员变量、局部变量都统一使用如lowerCamelCase的驼峰形式。

2.常量名全部大写。

3.枚举类成员名称全部大写。

二、常量定义

1.不允许任何魔法值直接出现在代码中。

2.如果变量值有确定的范围变化,且带有名称之外的延伸属性,定义为枚举类。

三、OOP规约

1.所有的覆写方法,必须加@Override注解

2.相同参数类型,相同业务含义才可以使用Java的可变参数,避免使用Object。

3.接口废弃过时需要添加@Depreated注解。不能使用过时的类或方法。

4.Object的equals方法容易抛空指针异常,确保有值的对象才可以调用。

5.相同类型的包装类对象之间值的比较使用equals方法。

6.在循环体中使用StringBuilder的append方法进行字符串连接。

7.final声明类、成员变量、方法、以及本地变量

(1)不允许被继承

(2)不允许修改成员变量的引用地址

(3)不允许被重写

(4)不允许重新赋值。只能重新定义变量

四、集合处理

1.只要重写equals,就必须重写hashCode。如果自定义对象作为map的键,则必须重写。

2.泛型通配符

(1)<? extends T>接收、读取返回的数据,该写法的泛型集合不能使用add方法。

(2)<? super T>存取、插入数据,不能使用get方法。

3.comparator比较时需要满足以下三个条件

(1)x,y的比较结果和y,x的比较结果相反。

(2)x > y,y > z,则x > z。

(3)x = y,则x ,z比较结果和y,z比较结果相同。

4.集合初始化时,指定集合初始值大小。例如HashMap(int initialCapacity),
initialCapacity=(需要存储的元素个数/负载因子)+1,负载因子默认为0.75。若无法确定大小,则设置16默认值。

五、并发处理

1.获取单例对象必须保证线程安全。

2.线程池必须手动new ThreadPoolExecutor()构造实例。

3.SimpleDateFormat是线程不安全的类,可以使用DateTimeFormatter来代替。

4.多线程并行处理定时任务时,使用ScheduledExecutorService不会在抛出异常后终止其他任务;而使用Timer+TimeTask,抛出异常后会终止其他任务。

5.一写多读用volatile,可以解决多线程内存可见性。LongAdder适合高并发海量计数使用。

六、控制语句

1.Switch必须包含default语句。

七、其他注意事项

1.获取整数类型的随机数,使用Random对象的nextInt/nextLong方法。

2.获取当前毫秒数使用System.currentTimeMillis();而不是new Date().getTime();统计时间使用Instant类。

八、异常处理

1.try-catch捕获异常时必须处理异常,而不是什么都不处理。

2.try-catch放到了事务代码中,如果需要回滚事务则需手动回滚。

九、安全规约

1.敏感数据禁止直接展示,必须做脱敏处理。

十、MySQL数据库

1.主键索引名为 pk_字段名;唯一索引名为 uk_字段名;普通索引名则为 idx_字段名。

2.小数类型为 decimal,禁止使用 float 和 double。

十一、ORM映射

1.在表查询时,指定查询字段,不要使用*作为查询的字段列表。

作者