“荡胸生层云,决眦入归鸟”,《Java 开发手册(泰山版)》正式和大家伙见面了!秉承着“码出高效,码出质量”的一贯愿景,泰山小哥跳着欢快的步伐向大家走来了,以下是他的独白:

自华山版现身武林以来,大家都叫泰山泰山快现身,但是一开始我是拒绝的,不能因为你说来,我就马上来,直到我遇到了 stream.Collectors 类下 toMap() 方法的坑,转化逻辑对我等键盘侠来说应该是手到擒来,谁知一脚深坑踩进了无底洞,两个相同 key 的转化时就已经撂挑子了。怎奈祸不单行,toMap() 大哥在进行值为 null 的转化逻辑时突然的空指针异常,又一次给了我沉痛一击,于是我悔悟,我惶恐,我连夜买着站票赶来见大家,欲知详情如何,请速速下载《Java 开发手册(泰山版)》。

错误码一统中原

夜色中的火车驶过泰安站,我朦胧欲睡时,边上的 HTTP 小哥传来一个声音“嘿,兄弟,前方道口 404 信号灯了”,我一脸懵逼状,然后他就开始嘲笑我们后端程序之间纷繁复杂又各自为政的错误码定义,这让我十分没有面子。但是今天!这样局面就要被终结!你还在为杂乱的错误码而烦恼么?统一错误码,就是统一度量衡,为你的应用与服务的稳定保驾护航,烦恼清空,快乐回家。

泰山版新近出炉的错误码具有快速溯源、简单易记、沟通标准化三大优势。错误码为字符串类型,共 5 位,分成两个部分:错误产生来源和四位数字编号。错误产生来源分为A/B/C,以当前代码运行视角来进行判定:

  • A 表示错误来源于用户,比如请求参数错误,用户安装版本过低等问题。
  • B 表示错误来源于当前系统,往往是业务逻辑出错,或程序健壮性差等问题。
  • C 表示错误来源于第三方服务,比如 CDN 服务出错,消息投递超时等问题。

优秀的错误码可以迅速知道他们是怎么来滴,从哪儿来滴,来干啥滴。同时俺们的错误码具有三级结构,分为一级宏观错误码、二级宏观错误码、三级宏观错误码,你想要的,泰山我全部都有。

闰年多一天多一丝烦恼

蔡国庆叔叔曾唱过“一年有三百六十五个日出,我送你三百六十五个祝福”,当闰年的时候,我们就会有一天收不到蔡叔叔的祝福了。虽前有“千年虫”之鉴,但好多朋友却开始在代码中玩儿起了“闰年虫”,一个写死为 365 天的年份天数,在闰年里让大家尝尽了悲伤痛楚,比如,缓存有效期 = 3652460*60 秒,结果提前一天所有缓存同时失效,高并发访问时数据库就跪了。对此,泰山我不禁要问了,LocalDate 它不香么,你要的年份、天数,它通通拥有,听哥的,以后这坑啊,咱不踩。

表的别名

“在这表的世界里,为什么我不配拥有一个简洁的江湖头衔?”SQL 老弟常常对我说这日子他过得憋屈。 “泰山大哥,你知道么?我在一个多表操作的 SQL 中大吼一声行者孙,竟然活生生蹦出了俩,劈头盖脸那就是给我一顿胖揍。”多表连接操作的时候,当一个相同的列名出现在多个表的时候就是会如此,多个行者孙打架斗殴的场面屡见不鲜。我们能做的就是用表的别名(或表名)来给这些小猴子般的操作列加上限定,不然花果山的猴子就会跟果子岭的猴子起冲突,让我等键盘侠沦落于无穷的 BUG 地狱中,不得超脱。

代码无空行憋得慌

遥望东海,当年我也是代码届一蛟龙,可上九天揽月,可下五洋抓鳖,但是有些仁兄的百余行一站到底式的瀑布式写法还是让我玉面小蛟龙感受到了窒息的滋味。代码和人一样,憋久了也是要换气的,未来你的代码要被很多人阅读和修改,因此,不要让阅读者感到憋闷和窒息,也是好的代码应该做的事情,当某个方法的代码行数超过 10 行时,return / throw 等中断逻辑的右大括号后加一个空行。合适的换行能够让阅读者获得喘息的机会,更能让代码之间的组织方式更加的协调。

三目运算符的任性

三目运算符这个外表看起来老实巴交的孩子却不是个好相处之辈,竟然也玩起了儿时类型转化的游戏,让我等好汉折了腰。这是咋回事儿呢?原来在三目运算符中:

condition ? 表达式 1 : 表达式 2

表达式 1 和 2 在涉及算术计算或数据类型转换时,会触发自动拆箱。拆箱操作本来没有问题,但是当其中的操作数为 null 值时,一个大大的 NPE 就砸到了我滴脸上,泰山我不能让兄弟们前赴后继踩进深坑里,跌得鼻青脸肿,下面就复原下现场,大家回家思考一下为啥抛出 NPE 异常:

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

寄语未来

本次泰山版是一次全新的革新,涉及到集合转化函数式接口中的深坑、年份天数写死所带来的问题、SQL 多表操作未加表名对字段限制惨案、以及统一错误码能够为我们带来的巨大好处,更多的细节与精彩我们可以在泰山版手册中细细品读。这些年来我们同全球有着相同极致追求的开发者一起,不断的完善和迭代着 Java 开发手册,用技术情怀去做一件帮助所有 Java 开发者们避免踩坑。因为相信,所以看见,未来我们将一起继续为全球的 Java 开发者们服务,致力于消灭各类程序中的疑难病症。

手册中每一条规约的背后都有一段或悲伤或遗憾的故事,将前人的历史经验沉淀下来,让后面的人的路走的更平坦。我们于小中见大,于细微处见真章。“见渺小之物必细查其纹理”,可能也是我辈技术人独有的浪漫,small is powerful, small is beautiful。

再次感谢各位全球开发者,本次《Java 开发手册(泰山版)》共计新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,欢迎大家下载与阅读。下一个版本“嵩山版”,咱们少林寺见真功夫。

点击立即下载:《Java 开发手册(泰山版)》

史上最强《Java 开发手册》泰山版王者归来相关推荐

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

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

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

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

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

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

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

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

  5. 史上最全Java开发手册!!!阿里出版

    Java 开发手册 阿里巴巴集团技术部 2016.12.7 首次向 Java 业界公开 一.编程规约 (一) 命名规约 1.[强制]所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符 ...

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

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

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

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

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

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

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

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

  10. 阿里巴巴Java开发手册(嵩山版)v1.7.0 及各个历史版本 百度云直接带走 不需要其他操作

    阿里巴巴Java开发手册(嵩山版)v1.7.0 阿里巴巴Java开发手册(泰山版)v1.6.0 阿里巴巴Java开发手册(华山版)v1.5.0 阿里巴巴Java开发手册(详尽版)v1.4.0 阿里巴巴 ...

最新文章

  1. 这是什么神仙公司?居然公布离职员工信息,还给差评?
  2. 【实用技能】通过sh脚本动态上传项目到github
  3. springboot-websocket-netty
  4. jeesite1.X 集成多数据源
  5. 26产品经理需要具备的市场观察能力
  6. Python+Selenium自动化测试:Page Object模式
  7. oracle日期函数函数,Oracle日期函数
  8. hdu2147PN图的画法
  9. php版微信公众号消息主动推送_PHP版微信公众号消息主动推送
  10. java 设置excel颜色_Java 设置Excel图表背景填充(颜色、图片填充)
  11. python 模拟点击第三方软件_使用Python模拟腾讯第三方认证-篇2
  12. OSChina 周一乱弹 ——连自己老婆的双胞胎妹妹都不放过
  13. ips细胞技术治疗尿毒症最新进展
  14. 【汇编】32位操作系统进程为什么最大可以占用4G内存?
  15. matlab数据归一化与反归一化处理
  16. nodejs简单介绍
  17. 云服务器 架设传奇_阿里云虚拟主机,ECS服务器,轻量应用服务器有什么区别,该如何选择?...
  18. matlab 莫比乌斯曲面,神奇的莫比乌斯带,只有一个曲面可以无限循环
  19. doom-emacs
  20. CTF---Web---SQL注入---10---get传参的删减

热门文章

  1. 告别加班:一个让你不再重复工作的技能
  2. 聚合型神器!有了他,手机里app可以删一半
  3. Python 一键导出微信阅读记录和笔记,666!
  4. mysql128位整数_mysql的数据类型
  5. linux怎么装mac系统,Linux/macos系统怎么安装nvm
  6. oracle让查出来的数据排序,Oracle数据库的查询排序
  7. Quick Search Articles in My Blog
  8. day36 03-Hibernate检索方式:排序、参数绑定、投影查询
  9. JNI学习积累之二 ---- 数据类型映射、域描述符说明
  10. LINUX的“脏奶牛”