阿里的《Java开发手册》距离上次发布已经过去了 10 个月了,而这次发布也增加了很多干货内容,比如:新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,发布日志如下图所示:

新增内容概览

本次更新主要更新的内容有:

  1. 新增了错误码规范;

  2. 扩充了日期(闰年、闰月等)处理方案;

  3. 表别名规范;

  4. 三目运算符规范等。

接下来我们来看这些新增内容的具体含义。

1.错误码规范

之前版本中是没有关于「错误码」的整体说明的,而这个版本增加了很大的篇幅,来把这个前后端配合的重要环节「错误码」部分,做了详细的规范和说明,可谓非常的香,具体规范如下:

  • 【强制】错误码的制定原则:快速溯源、简单易记、沟通标准化。

  • 【强制】错误码不体现版本号和错误等级信息。

  • 【强制】全部正常,但不得不填充错误码时返回五个零:00000。

  • 【强制】错误码为字符串类型,共 5 位,分成两个部分:错误产生来源 + 四位数字编号。

说明:错误产生来源分为 A/B/C:

  • A:表示错误来源于用户,比如参数错误,用户安装版本过低,用户支付超时等问题;

  • B:表示错误来源于当前系统,往往是业务逻辑出错,或程序健壮性差等问题;

  • C:表示错误来源于第三方服务,比如 CDN 服务出错,消息投递超时等问题;四位数字编号从 0001 到 9999,大类之间的步长间距预留 100,详情可见《Java开发手册》正文。

2.扩充了日期处理方案

一个写死为 365 天的年份天数,在闰年里让大家尝尽了悲伤痛楚,比如,缓存有效期 = 3652460*60 秒,结果提前一天所有缓存同时失效,高并发访问时数据库就跪了。

【强制】不要在程序中写死一年为 365 天,避免在公历闰年时出现日期转换错误或程序逻辑错误。

正例:

// 获取今年的天数 int daysOfThisYear = LocalDate.now().lengthOfYear(); // 获取指定某年的天数 LocalDate.of(2011, 1, 1).lengthOfYear(); 复制代码

反例:

// 第一种情况:在闰年 366 天时,出现数组越界异常 int[] dayArray = new int[365]; // 第二种情况:一年有效期的会员制,今年 1 月 26 日注册,硬编码 365 返回的却是 1 月 25 日 Calendar calendar = Calendar.getInstance(); calendar.set(2020, 1, 26); calendar.add(Calendar.DATE, 365); 复制代码

3.表别名规范

【强制】对于数据库中表记录的查询和变更,只要涉及多个表,都需 表名)进行限定。 说明:对多表进行查询记录、更新记录、删除记录时,如果对操作列没有限定表的别名(或表名),并且 操作列在多个表中存在时,就会抛异常。 正例:select t1.name from table_first as t1 , table_second as t2 where t1.id=t2.id;

反例:在某业务中,由于多表关联查询语句没有加表的别名(或表名)的限制,正常运行两年后,最近在 某个表中增加一个同名字段,在预发布环境做数据库变更后,线上查询语句出现出 1052 异常:Column 'name' in field list is ambiguous。

【推荐】SQL 语句中表的别名前加 as,并且以 t1、t2、t3、...的顺序依次命名。 说明:

  • 别名可以是表的简称,或者是根据表出现的顺序,以 t1、t2、t3 的方式命名。

  • 别名前加 as 使别名更容易识别。 正例:select t1.name from table_first as t1, table_second as t2 where t1.id=t2.id;

4.三目运算符规范

原来在三目运算符中:

condition ? 表达式1 : 表达式2

表达式 1 和 2 在涉及算术计算或数据类型转换时,会触发自动拆箱。拆箱操作本来没有问题,但是当其中的操作数为 null 值时,一个大大的 NPE 就砸到了我滴脸上,如下代码所示:

Integer a = 1; Integer b = 2; Integer c = null; Boolean flag = false; Integer result = (flag ? a * b : c); 复制代码

注意:a*b 的结果是 int 类型,那么 c 会强制拆箱成 int 类型,抛出 NPE 异常。

【强制】三目运算符 condition? 表达式 1 : 表达式 2 中,高度注意表达式 1 和 2 在类型对齐时,可能抛出因自动拆箱导致的 NPE 异常。

说明:以下两种场景会触发类型对齐的拆箱操作:

  • 表达式 1 或表达式 2 的值只要有一个是原始类型。

  • 表达式 1 或表达式 2 的值的类型不一致,会强制拆箱升级成表示范围更大的那个类型。

总结

下载地址(csdn链接不允许放网盘链接):私信回复 java

阿里新版《Java 开发手册(泰山版)》来了,很多规范值得学习相关推荐

  1. C++手册_阿里新版《Java 开发手册(泰山版)》内容解读(附下载地址)

    阿里的<Java开发手册>距离上次发布已经过去了 10 个月了,而这次发布也增加了很多干货内容,比如:新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,发 ...

  2. 阿里新版java开发手册(2019华山版、2020泰山版)

    pdf文件链接: https://pan.baidu.com/s/15Q_qCyqLTG0wBFyHVM3zog 提取码: in6y 目录 一. 编程规约 (一) 命名风格 (二) 常量定义 (三) ...

  3. 它来了:阿里巴巴Java开发手册泰山版解读

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「阿飞的博客」 <Java开发手册 ...

  4. 阿里巴巴java开发手册-泰山版 下载

    最近,阿里的<Java开发手册>又更新了,这个版本历经一年的修炼,取名:<Java开发手册(泰山版)>正式出道.正所谓无规矩不成方圆,在程序员的世界里,也存在很多规范,阿里出版 ...

  5. 解读《Java开发手册(泰山版)》- 会当凌绝顶,一览众山小 (附下载地址)

    阿里的<Java开发手册>被Java开发者所拜读,基本人手一册,就在前几天(2020.04.22)发布了泰山版 - 会当凌绝顶,一览众山小,而这次发布新增了很多干货内容,在此,给大家分享一 ...

  6. 阿里JAVA开发手册(泰山版)

    目录 前言 一.编程规约 (一)命名风格 (二)常量定义 (三)代码格式 (四)OOP 规约 (五)日期时间 (六)集合处理 (七)并发处理 (八)控制语句 (九)注释规约 (十)其它 二.异常日志 ...

  7. 阿里巴巴《Java开发手册(泰山版)》

    现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量.比如:数据库的表结构和索引设计缺陷可能带来软件上的架构缺陷或性能风险:工程结构 ...

  8. java开发手册泰山版阿里巴巴_阿里巴巴Java开发手册(泰山版)个人阅读精简

    java开发规范个人精简 根据自己的经验进行适当提炼重要的,需要的. 阅读中.... 编程规约 命名风格 类名首字母大骆驼拼写法.方法.参数.变量名小骆驼拼写法 LeiMing bianLiang f ...

  9. 2022 最新版java开发手册 黄山版

    下面的地址是一篇文章的地址,下载地址在文章里面靠上的位置.文章讲述了版本历史沿革.共同之处以及黄山版的更新之处等,想了解的也可以看一下呀. 官网下载地址: https://developer.aliy ...

最新文章

  1. jupyter notebook修改默认工作目录
  2. Msg3最大传输次数(maxHARQ-Msg3Tx)
  3. 自已动手写的轮播图插件,功能不断增加中,可以下载
  4. 意料之外,也是情理之中 - 我的自由职业之旅
  5. 马逊s3云存储接口_使用 Amazon S3 云服务轻松实现存储
  6. QCostomPlot 示例注解 1
  7. Python 装饰器@functools.wraps(func)
  8. mysql系统变量_MySQL系统变量
  9. 【more effective c++读书笔记】【第5章】技术(5)——Reference counting(引用计数)(2)...
  10. Sublime Text 3 如何配置Python环境及安装插件?
  11. 幻昼计算机弹奏,freepiano曲谱_Freepiano简谱
  12. 行测备考丨易混词傻傻分不清?大神来拯救你!
  13. java技术栈是指什么,值得一读!
  14. 华为公司是如何做绩效考核的
  15. 游戏联网必备: 国内外实时对战服务详细对比
  16. 蚂蚱跳跃问题 【字节笔试】题目说 ”字节“跳动
  17. 协同办公考勤管理系统php,协同办公考勤管理系统完整源码 超级给力UI 适用于中小型企业的办公考勤管理系统...
  18. 759页14万字智慧大楼弱电智能化规划设计方案
  19. 帮我写一个X波段小型化带通滤波器开题报告
  20. DBeaver无法连接SQL Server

热门文章

  1. 清华大学梁宸计算机系,30名清华博士生对泉州社会实践总结 《清·泉》一捧 文都精彩...
  2. Java校验入参之正则表达式校验特殊字符
  3. mysql在指定列后面添加多列
  4. html input 上下箭头,CSS input type=number出现上下箭头时解决方案
  5. 2019.01.24【NOIP提高组】模拟B组 JZOJ 3912 超氧化钾
  6. Gazebo相关内容学习
  7. 关于Ubuntu22.04没有WiFi图标或未找到WiFi适配器
  8. 从事功能测试1年,裸辞1个月,找不到工作的“我”怎么办?
  9. 诗杰:坚持热爱,成为更好的自己
  10. 小学计算机第二册教案,小学信息技术第二册教学教案.doc