- 4
- 0
- 约3.36万字
- 约 36页
- 2020-11-18 发布于广东
- 举报
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开
发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终
的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在
实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。
无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标
准等规范,并在实际工作中进行了应用和推广,收效颇丰,也总结了适合支付平台的技
术规范,由于阿里巴巴Java开发手册本身定位为规约和规范,语言简单、精炼,没有太
多的解读和示例,有些条款对于一般开发人员理解起来比较困难,本文借着阿里巴巴发
布的Java开发手册,详细解读Java平台下开发规范和标准的制定和实施,强调那些在开
发过程中需要重点关注的技术点,特别是解决某类已识别问题的模式和反模式。
异常处理
【强制】Java 类库中定义的一类 RuntimeException 可以通过预先检查进行规避,而不应
该通过 catch 来处理,比如: IndexOutOfBoundsException ,NullPointerException等等。
GitChat
说明: 无法通过预检查的异常除外,如在解析一个外部传来的字符串形式数字时,通过
catch NumberFormatException 来实现。
正例: if (obj != null) {…}
反例: try { obj.method() } catch (NullPointerException e) {…}
白话:
判空是一个永恒的话题,只要你不确定变量是否为空,都应该判空,否则后患无穷。
【强制】异常不要用来做流程控制,条件控制,因为异常的处理效率比条件分支低。
白话:
禁止使用异常来封装业务逻辑,业务异常应该用错误码来表示,系统异常则使用Java原
生异常。
异常处理是通过异常表查询来实现的,肯定没有跳转语句性能高。
【强制】对大段代码进行 try-catch ,这是不负责任的表现。catch 时请分清稳定代码和非
稳定代码,稳定代码指的是无论如何不会出错的代码。对于非稳定代码的catch尽可能进
行区分异常类型,再做对应的异常处理。
白话:
做事要直切主题,不能一概而论。
不能简单的catch Throwable ,然后打印日志,这是不负责任的表现,应该有针对的抓住
和处理异常。
【强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理
它,请 将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用
户可以理解的内容。
白话:
禁止吃掉异常,吃掉异常就是捕获异常什么都没做,也没抛出,这也是不负责任的表
现。
是在不能处理的异常抛出去,但是得让使用方知道这种情况,这是编程提供方契约的一
种方式。
【强制】有 try 块放到了事务代码中,catch 异常后,如果需要回滚事务,一定要注意手
动回滚事务。
白话:
我们基本采用声明式事务,出现异常需要回滚的情况,建议继续抛出异常让声明式事务
自动回滚,不建议代码中手工控制事务。
GitChat
【强制】finally 块必须对资源对象、流对象进行关闭,有异常也要做 try-catch 。 说明:如
果 JDK7 及以上,可以使用 try-with-resources 方式。
白话:
永恒的资源关闭原则。
【强制】不能在 finally 块中使用 return ,finally 块中的 return 返回后方法结束执行,不会
再执行 try 块中的 return 语句。
白话:
确实会覆盖try块里面的return语句。
思维不混乱的话,没人会把return语句写在finally语句里。
【强制】捕获异常与抛异常,必须是完全匹配,或者捕获异常是抛异常的父类。
如果预期对方抛的是绣球,实际接到的是铅球,就会产生意外情况。
白话:
异常处理后,让异常变得更小,而不是变大,大而化小,小而化了。
【推荐】方法的返回值可以为 null ,不强制返回空集合,或者空对象等,必须添加注释
充分 说明什么情况下会返回 null 值。调用方需要进行 null 判断防止 NPE 问题。
说明: 本规约明确防止 NPE 是调用者的责任。即使被调用方法返回空集合或者空对象,
对调用 者来说,也并非高枕无忧,必须考虑到远程调用失败,运行时异常等场景返回
null 的情况。
白话
您可能关注的文档
- 英文-在数据中心为什么建议选择部署Tesla GPU.pdf
- 22.智能家居解决方案(1).pdf
- 16 NB智能锁解决方案白皮书.pdf
- Java 异常处理从入门到实战 .pdf
- 中信证券建材行业研究方法39页.pdf
- Pakedge 卓越的网络解决方案.pdf
- 钢质管道穿越铁路和公路推荐作法SY/T0325-2001.pdf
- 英文_GRID_成功案例_建筑工程_Cannon-Design.pdf
- 02【产品介绍】智慧停车.pdf
- 英文-NVIDIA Virtual GPU 行业手册_金融服务.pdf
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
原创力文档

文档评论(0)