1 左小括号和代码之间不出现空格,又小括号代码之间不出现空格,左大括号代码之间出空格
if (a == b) {
}
复制代码
2 任何2目 3目运算符左右加空格
if (a == b) {
}
复制代码
3 if与括号之间必须有一个空格
if (a == b) {
}
复制代码
4 注释与注释的内容之间必须有一个空格
// 我是注释
复制代码
5 强制类型转换不能有空格
long first = 10000;
int second = (int)first;
复制代码
6 单行超过120个字符强制换行,点和方法名称一起换行,不再逗号前换行
7 方法参数在定义和传入时后面要有一个空格
method(one, two, three)
复制代码
8 单个方法总行数不超过80行
9 所有复写的方法加@Override
10 建议尽量不用可变参数编程
11 所有整形包装类比较用equals,因Integer 的-127和128之间是同一个对象,而在此之外就是不同的对象,会不相等
12 浮点数之间不能用 == 比较,包装类型不能用equals比较
float a = 1.0f – 0.9f;
float b = 0.9f – 0.8f;
if (a == b) false
解决方案是把浮点数放到BigDemical中,并用equls比较BigDemical
13 bigInt要对应Java代码Long
14 禁止使用BigDemical(double),要使用BigDemical.valueOf(0.1)
15 Pojo类禁止使用默认值,因为保存的时候,会默认保存这个默认值
16 pojo类一定要重写toString方法
17 禁止pojo类同时使用 is和get方法。因为不知道哪种会被优先调用
18 当使用数组的split方法截取时要进行数组有没有内容判断,否则可能报错数组下表越界
19 在get和set方法中不要加业务逻辑,否则会增加排查难度
20 在for循环拼接的时候使用StringBuilder来拼接字符串
21 慎用Object的clone方法来克隆对象,因为是浅拷贝,要深拷贝要重写clone方法
22 使用Array.asList(),不能使用add方法,以为他本质上是一个数组
23 不要在foreach方法中使用add和remove,如果使用remove要通过Iterator遍历
24 在集合初始化时,指定集合初始大小
25 使用entrySet遍历Map集合,不要keySets遍历,因为后者实际上遍历两次,java8使用Map.foreach方法
26 ConcurrentHashMap的key是不能为空的
27 在try之前使用lock,避免在finally中执行unlock时报异常
28 如果每次访问冲突概率小于20%,使用乐观锁,否则使用悲观锁
29 与资金相关的敏感操作使用悲观锁
30 switch块内一定要加default
31 如果switch判断的是字符串,并且是通过参数传入的,那么一定要进行非空判断
32 if else 不能超过3层,如果超过三层使用卫语句,就是把复杂的条件表达式拆分成多个条件表达式,当条件为真返回给调用方
33 条件表达式中禁止赋值
34 条件表达式尽量不用反逻辑
35 异常不要用来做流程控制,条件控制,因为他效率比条件判断低很多
36 如果使用try catch在事务中,如果事务需要回滚一定要注意rollback
37 finally如果出现异常也要用try catch操作
38 try catch 中如果出现return并不会马上返回,而是会先执行finally,如果finally中写了return,那么会忽略掉try 中的逻辑
39 Http接口报错返回错误码