1、序言
今年阿里又更新了Java开发手册,留下学习记录,下面分享一波(包括8个版本,最新为嵩山版):
——链接:https://pan.baidu.com/s/1zAlWWy1E9_dUxCGoLCh8fw
提取码:x68g
2、阿里规约插件
要想熟记规约是一件困难的事情,由此使用阿里Java开发手册配套的规约插件Alibaba Java Coding Guidelines就显得方便了许多,还能直接在IDEA的plugin中下载,非常方便,详情可参考GitHub地址或者我的另外一篇博客IDEA插件,你值得拥有。
3、手册学习
3.1 编程规约
3.1.1 命名风格
介绍了一些命名规范,和前几版本基本类似,比如类名要采用大驼峰式(如:XmlService)、方法名或者参数名需要使用小驼峰式(如:userName)等。
个人理解:我们在取变量名时,常常因为词汇量匮乏而感到烦恼,常见的解决方式有两种:查单词取名(我就是用的这种方式)和拼音取名。虽然拼音比起用单词要稍微low了一点,但是相比生疏的单词,拼音比较简单易懂(如果命名比较严谨的话)。所以我个人觉得不论是使用单词还是拼音命名,最好是要加上注释,不然可能自己都忘记是什么意思了,别说其他同事了。还有就是不要使用拼音简写,比如用dj表示‘点击’,这样的命名感觉就。。。感觉挺难的,特别是还不写注释,有点看不懂。
3.1.2 常量定义
①避免魔法值
不好意思的说,初次对魔法值这个概念的理解还是因为IDEA里安装了阿里规约插件提示我不能使用魔法值,比如我们常常喜欢用数字或者数字字符串来储存类型,比如性别类型我们经常使用0代表女性,1代表男性,因此我们的代码里常常会出现下面的代码:
1 | // 以下代码只是做实例,真要有这样的情况可以使用switch case的方式,更方便直观 |
这样的代码使用倒是挺方便的,但是稍微隔一段时间,你再回到来看,你就会尴尬的挠头,这个1是什么类型?2是什么类型?因此定义一个变量或者常量来代表这些值,应该会更直观,更容易理解。比如:
1 | if (man.equals(type)) { |
②常量定义位置
不同的位置定义该范围的常量,避免将所有常量定义在一个大而全的常量类中
3.1.3 代码格式
这一块中定义了代码格式化规范,庆幸的是IDEA都为我们解决了这些烦恼,Ctrl +alt + L便能格式化我们的代码(即便如此,还是需要自己能了解一些简单的格式,即便离开编辑器也能写出好看的代码。)
3.1.4 OOP规约
①比较
之后会单独写一篇记录比较这一块的点,实实在在的感受到了自己菜,一不留神就会踩坑。
②数值运算
能避免使用小数运算的地方,尽量避免,涉及到金额的运算一定要小心谨慎,BigDecimal能帮到你很多。

如果你没有踩过小数运算的坑,请尝试下面的代码,带你入坑:
1 | System.out.println(0.1 * 3); |
3.1.5 日期时间
如果没有尝试过Java8的LocalDate、LocalTime和LocalDateTime,可以尝试一下,即便是实体类中不使用,但是这里面的一些静态方法你值得拥有。比如判断闰年、年天数、月天数等。
3.1.6 集合处理
项目中集合操作的的使用频率是非常高的,但是Java可能一言不合就会给你丢一个NPE空指针异常出来,所以这一段我看了好几遍。
① 集合判空
** 注意点:虽然isEmpty()可以判断集合是否有数据,但是注意调用时的空指针问题(使用isEmpty()方法的集合为null)。解决办法:判空或者使用Apache下Commons工具包(功能很多),下面推荐一个博客:
Commons工具包博客
②集合转数组
③数组构建集合
Arrays.asList(arr)这个方法使用的人不少,但是这样构建的集合不能使用集合的add/remove/clear方法,不然或抛出异常。
** 解决办法:使用ArrayList来构造
1 | List<String> list = new ArrayList<>(Arrays.asList(arr)); |
④集合遍历谨慎操作增删
踩过坑的兄弟都知道这个坑,增删有风险,操作需谨慎。
⑤合理的指定集合初始化大小
尤其是有多线程添加数据进集合的场景,数据量大还不指定初始化大小,很容易出现数组越界异常。
3.1.7 并发处理
记录了一些并发处理的注意事项
3.1.8 控制语句
①switch case
注意退出(continue/break/return)
②多重if else
“控制语句”)
多重嵌套循环真是真的很烦(虽然我也经常这么偷懒干)
3.1.9 注释规约

- 本文作者: tenyears
- 本文链接: https://tenyears94.gitee.io/2020/08/08/阿里巴巴Java开发手册学习记录/
- 版权声明: 本博客所有文章转载请注明出处!
