Java的代码规范

  • 前言
  • 命名规范
  • 格式规范
  • OOP 规约(面向对象编程规约)

前言

20 世纪 80 年代末,有家公司写了一个很流行的杀手应用,许多专业人士买来用,然而发布周期逐渐拉长,装载时间越来越久,终于,在之后的某天,这家公司关门大吉了。当年到底发生了什么,后来一位雇员道出原由,原来,他们赶着出产品,代码写的乱七八糟,特性越加越多,代码越来越烂,最后再也没有办法管理这些代码了。所以,是糟糕的代码毁了这家公司。
那么代码规范的问题就显而易见了,下面简要介绍 Java 的代码风格

命名规范

1.类名首字母大写,如果类名由几个单词构成,那么把它们拼在一起,不要用下划线,每个单词首字母大写。也就是“驼峰命名”。

public class ListIteration

2.抽象类命名以 Abstract 或 Base 开头,异常类命名使用 Exception 结尾,测试类命名以 Test 结尾。

//抽象类
public abstract class AbstractList
//异常类
public class EmptyStackException
//测试类
public class ArrayListTest

3.方法名、变量使用小写开头,并使用驼峰命名,常量命名全部大写,单词之间下划线隔开,数组定义时中括号放在中间,布尔类型变量前面不要加 is 。

//变量命名
public int maxCount;
//常量命名
public final String MAX_COUNT = “maxCount”;
//方法命名
public void methodName(){}
//数组
public String [] args = {};
//布尔类型
public boolean flag;

4.包名小写,使用单数形式。

java.util

5.所有命名不要使用拼音或拼音与英文的混合体,更不要使用中文。

格式规范

1.long, float, double 变量赋值时,必须使用大写的字母,而不能是小写的字母,小写容易混淆。

//大写的L,如果是小写的l,容易造成误解
public Long num = 12L;

2.如果大括号内为空,那么可以直接写成 {} 即可,不用换行,如果是非空代码块,那么遵守以下约定:
1)左大括号前不换行,左大括号后换行,左大括号和后一个字符之间不出现空格
2)右大括号前换行,如果后面跟有 else 则不换行,右括号与前一个字符之间不出现空格
3)if/else/while/for 等保留字与左右括号之间须加空格

public void method() {
int num = new Random().nextInt(10);
if (num > 5) {
System.out.println(num);
} else {
System.out.println(num);
}
}

3.运算符的左右须加空格

//运算符左右都需要空格
int num = 5;

4.单行字符数超过 120 时须换行,换行时缩进四个空格,运算符与下文一起换行,逗号之后再换行,括号前不要换行。
5.多个参数传入时,参数逗号之后需要空格。

//多个参数,逗号后须空格
public void method(int a, int b){}

6.Idea 的 text file encoding 设置为 UTF-8,Idea 的换行符设置为 Unix 格式,不要使用 windows 格式。

OOP 规约(面向对象编程规约)

1.所有的覆写方法,须加 @override 注解,过时接口须加 @Deprecated 注解,并清晰标注新接口是什么,不要使用过时的方法或类。

2.静态方法或静态属性,直接用类名访问即可,不要通过对象访问。

3.使用 Object 的 equals 方法判断时,应将有值得对象或常量放在前面,可以避免空指针异常。

String str = “test”;
//有值的常量或对象放在前面
if (“test”.equals(str)) {
System.out.println(str);
}

4.所有相同类型包装类之间的值得比较,使用 equals 方法比较。大家可以看看这段代码:

Integer num1 = 128;
Integer num2 = 128;
//结果真的是 true 吗
System.out.println(num1 == num2);

这个坑以前踩过,结果很意外,是 false。Integer 对象是在 IntegerCache.cache 产生,会复用已有对象,区间 -128 ~ 127 之间的值都可以 == 来判断,但是这个区间之外的值,会在堆上产生,不会复用已有对象。用 equals 方法判断可以避免类似问题。

5.POJO 类除了必要的 get 和 set 方法外,还须加入 toString 方法。这些方法在 Idea 中通过快捷键 ALT + INSERT 来生成。
6.当类中有多个构造方法,或者有重载方法时,这些方法须按照顺序放在一起。
7.使用 foreach 来遍历集合的时候,不要在循环里面使用 remove / add 操作。如果要对集合进行 remove / add 操作,那么使用 Iterator。

List list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Iterator its = list.iterator();
while (its.hasNext()) {
Integer it = its.next();
if (it > 2) {
// remove 操作
its.remove();
}
}

以上就是 Java 代码规范的简要内容。