《阿里巴巴Java开发手册1.4.0》阅读总结与心得(一)
前言
下面是阿里对《阿里巴巴 Java 开发手册》(下称《手册》)的介绍:
凝聚了阿里集团很多同学的知识智慧和经验,这些经验甚至是用血淋淋的故障换来的,希望前车之鉴,后车之师,能够帮助更多的开发者少踩坑,杜绝踩重复的坑。

在知乎上,也有关于这本开发手册的讨论十分热烈的帖子:https://www.zhihu.com/question/55642203。
其中一位网友的话让楼主觉得十分有趣,现贴出来博大家一笑:

在楼主看来,阿里巴巴的这本Java开发手册,可谓包罗万象,几乎日常Java开发中方方面面都有所涉及。
由于里面涉及的内容比较多,下面重点罗列下一些楼主读过之后十分赞同与持保留意见的条目:
(一)编码规范
(一)命名规约
8. 【强制】POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误。
反例: 定义为基本数据类型 Boolean isDeleted 的属性,它的方法也是 isDeleted(), RPC框架在反向解析的时候, “误以为” 对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。
看法:此条级别为强制,不过是有特殊的应用场景的,boolean类型变量加上is前缀无可厚非。举例来说,对于处理状态标志,我觉得isProcessed/processed/processFlag/processStatus,这四种写法都是很OK的。不过我个人可能更偏好用processed,比较简洁。当然此条目被列举在开发手册中,也是前人踩坑的教训,吸收一下挺好。
10. 【强制】杜绝完全不规范的缩写,避免望文不知义。
反例: AbstractClass“缩写”命名成 AbsClass;condition“缩写”命名成 condi,此类 随意缩写严重降低了代码的可阅读性。
看法:非常赞同,时常在公司项目代码中看到不能一眼看出含义的拼音或者英文缩写比如cashFlow缩写为CF,代码可读性降低很多。Java代码不要害怕变量名或者方法名过长,除非你能找到一个比原先短,并且含义完全相同的更好的命名。
15.【参考】枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。
说明: 枚举其实就是特殊的类, 域成员均为常量, 且构造方法被默认强制是私有。
正例: 枚举名字为 ProcessStatusEnum 的成员名称: SUCCESS / UNKNOWN_REASON。
看法:级别被列为参考,代表此条目推荐程度不是太高。我的看法也是如此,其实枚举类命名后缀什么type啦,status都可以啊。
(二)常量定义
3. 【推荐】不要使用一个常量类维护所有常量, 要按常量功能进行归类,分开维护。
说明: 大而全的常量类, 杂乱无章, 使用查找功能才能定位到修改的常量,不利于理解和维护。
正例: 缓存相关常量放在类 CacheConsts 下; 系统配置相关常量放在类 ConfigConsts 下。
看法:挺好的规范,对于大型项目,按照业务功能/模块常量类分开维护还是很有必要的。
(三)格式规约
12.【推荐】 不同逻辑、不同语义、不同业务的代码之间插入一个空行分隔开来以提升可读性。
说明: 任何情形, 没有必要插入多个空行进行隔开。
看法:在方法内部,逻辑上互相较为独立的代码块之间加入一个空行,会看起来更为清楚。但是也不要太极端,每行代码之间都插入空行,显得反而看起来空洞。
(四)OOP规约
9. 【强制】定义 DO/DTO/VO 等 POJO 类时,不要设定任何属性默认值。
反例: POJO 类的 gmtCreate 默认值为 new Date(), 但是这个属性在数据提取时并没有置入具体值,在更新其它字段时又附带更新了此字段,导致创建时间被修改成当前时间。
看法:非常赞同。曾经遇到一个bug,按条件筛选数据集怎么也查不出来,后来发现是实体类中一些字段被加入了默认值,导致查询的时候带上了这些莫名增加的筛选字段。
(五)集合处理
10. 【推荐】集合初始化时, 指定集合初始值大小。
说明: HashMap 使用 HashMap(int initialCapacity) 初始化。
正例:initialCapacity = (需要存储的元素个数 / 负载因子) + 1。注意负载因子(即 loaderfactor) 默认为 0.75, 如果暂时无法确定初始值大小,请设置为 16(即默认值) 。
反例: HashMap 需要放置 1024 个元素, 由于没有设置容量初始大小,随着元素不断增加,容量 7 次被迫扩大, resize 需要重建 hash 表,严重影响性能。
看法:非常赞同,在确定集合中元素个数的情况下,最好new的时候就指定好大小,这样不仅可以减少空间开销,也可以避免内存碎片的产生。
《阿里巴巴Java开发手册1.4.0》阅读总结与心得(一)的更多相关文章
- 码出高效,阿里巴巴JAVA开发手册1.4.0
码出高效,阿里巴巴JAVA开发手册1.4.0阅读笔记 一.编程规约(三) 代码格式// 关键词if与括号之间必须有一个空格,括号内的f与左括号,0与右括号不需要空格 if (flag == 0) { ...
- 读阿里巴巴Java开发手册v1.2.0之工程结构有感【架构篇】
首先,把昨天那俩条sql语句的优化原因给大家补充一下,第一条效率极低,第二条优化后的,sql语句截图如下: 经过几个高手的评论和个人的分析: 第一条sql语句查询很慢是因为它首先使用了in关键字查询, ...
- 读阿里巴巴Java开发手册v1.2.0之编程规约有感【架构篇】
不为过去蹉跎,改变当下. 为什么开篇就送这么一句话给大家,我相信很多处于1-3年码龄的哥们儿们,在平时的编码历程中编码的个性可能是多彩的,每个人都有每个人特定的风格,但是我们现在这么随意写,以后这么 ...
- 阿里巴巴 Java开发手册1.4.0
<阿里巴巴Java开发手册1.4.0>下载地址: 下载地址:https://102.alibaba.com/downloadFile.do?file=1528269849853/Java_ ...
- 【阿里巴巴Java开发手册1.7.0(嵩山版)】编程规约&MySQL 数据库规约
阿里巴巴Java开发手册1.7.0(嵩山版) 一.编程规约 (一)命名风格 所有命名不得以下划线和$开始和结束. 所有命名不得以拼音或拼音英文混合. 类名使用UpperCamelCase风格. 方法名 ...
- 《阿里巴巴Java开发手册1.4.0》阅读总结与心得(五)
笔者作为一名有数年工作经验的Java程序员,仔细研读了这份手册,觉得其是一份不可多得的好材料.阿里巴巴在发布时所说,“阿里巴巴集团推出的<阿里巴巴Java开发手册(正式版)>是阿里巴巴近万 ...
- 304902阿里巴巴Java开发手册1.4.0
转自官网 前言 <阿里巴巴Java开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,系统化地整理成册,回馈给广大开发者.现代软件行业的高速 ...
- 《阿里巴巴Java开发手册1.4.0》阅读总结与心得(四)
(七)设计规约 1. [强制] 存储方案和底层数据结构的设计获得评审一致通过,并沉淀成为文档. 说明: 有缺陷的底层数据结构容易导致系统风险上升,可扩展性下降,重构成本也会因历史数据迁移和系统平滑过渡 ...
- 《阿里巴巴Java开发手册1.4.0》阅读总结与心得(三)
(六)工程结构 (一)应用分层 1. [推荐]图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于Web 层,也可以直接依赖于 Service 层,依此类推: 开放接口层: ...
随机推荐
- typescript 公共,私有与受保护的修饰符
public理解 当你在程序中没有指明修饰符时,默认为public,也就是在类内类外都可以访问,我们以下面的例子来解释. class Person{ name:string sex:string ag ...
- 【JDK】JDK源码-Queue, Deque
概述 Queue 和 Deque 都是接口.其中 Queue 接口定义的是一个队列,它包含队列的基本操作:入队(enqueue)和出队(dequeue). Deque 接口继承自 Queue 接口,表 ...
- 【Android Studio】常用快捷键
1. 删除一行:Ctrl + X 更新中……
- Oracle RAC 集群启动与停止
Oracle RAC 启动时,需要使用 root 用户执行,为了方便,写了启动和停止的脚本, 将该脚本放到 /root/bin ,因为bin 目录本身就在环境变量里,所以使用时直接root用户运行脚本 ...
- SonarQube系列一、Linux安装与部署
[前言] 随着项目团队规模日益壮大,项目代码量也越来越多.且不说团队成员编码水平层次不齐,即便是老手,也难免因为代码量的增加和任务的繁重而忽略代码的质量,最终的问题便是bug的增多和代码债务的堆积.因 ...
- 《深入理解Java虚拟机》-(实战)练习修改class文件
这是一篇修改class文件的文章.注释并不完全,要抓住这次练习的目的: boolean在虚拟机中是以何种方式解读的 好的,开始我的表演 1.安装asmtools.jar 2.编写一个java文件,并编 ...
- java线程池,阿里为什么不允许使用Executors?
带着问题 阿里Java代码规范为什么不允许使用Executors快速创建线程池? 下面的代码输出是什么? ThreadPoolExecutor executor = new ThreadPoolExe ...
- win10 将硬盘工作模式由IDE调整到AHCI模式
第1步:重启进入安全模式 1)点击“开始”按钮 进入设置 2)进入“更新和安全”,“恢复-高级启动”,点击“立即高级启动”, 依次选择“疑难解答”-“高级选项”-“启动设置”-点击“重启” 第2步:进 ...
- Javarscipt中数组或者字符串的随机排序方法
在日常开发中,经常会遇到随机排序的需求,思路就是利用Math.random()方法,抽取随机数,让数组中的元素进行对调: 话不多说直接上代码,方法一:基本思路就是将a中随机抽取一个元素,放入b中,再从 ...
- 解决OneNote同步出错
问题: onenote同步出现黄色叹号. 解决: 分析: 对每个分区进行设置密码,不能设置的证明该分区有问题.(可能不只一个分区卡同步) 解决方法: 1,将有问题的分区分制一份,然后删掉原来的分区 2 ...