最近在加强Java代码规范,复习的过程中发现除了空格、驼峰、括号等常见的规范之外,还有一些平时不太注意但值得落实的规范,记录一下:
1. 30秒规则,方法实现在30秒内需要被别人读懂
2. 单个源文件最大长度2000行
3. 单行字符不超过120个
package、import、javadoc的url等不受限制
4. import不要使用通配符,避免引入新的类冲突
5. 0b、0x都用小写,long用大写(1L)
6. 领域模型命名规范
数据对象:xxDO
数据传输对象:xxDTO
展示对象:xxVO
名字不要命名为xxPOJO
7. 不要在finally块中使用return,不然会造成try块中的return不再执行
8. 异常不要用来做流程控制、条件控制
违背设计初衷
异常的处理效率远低于条件判断
9. 不要在方法内调用Pattern.compile()
避免反复编译,尽量只调用一次
10. 不用使用魔法值,用常量定义来代替
-1,0,1不被视为魔法值
11. 返回数组/集合时候返回空数组/空集合而非null
12. Integer等数值封装类用equals代替==
在-128~127范围,Integer对象在IntegerCache.cache产生,会复用已有对象,可以用==判断
在这个范围外的数据会在堆上产生,不会复用已有对象
13. 不同的Map类集合KV注意能不能设置为null
HashTable:key不能为null,value不能为null
HashMap:key可以为null,value可以为null
ConcurrentHashMap:key不能为null,value不能为null
看一下各自的put()方法实现就知道了
14. Arrays.asList()或者List.of()转化后不可修改
适配器模式,本质上仍然是数组