优雅代码规范

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接口报错返回错误码

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享