潜力修炼一年之久的《Java 开发手册(泰山版)》今天发布!此次共计新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,大家参考错误码示例表,欢迎大家下载与阅读!
也可点击下方链接直接下载:
“荡胸生层云,决眦入归鸟”,《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 处,其中错误码规则更是第一次提出完整的解决方案,欢迎大家下载与阅读。下一个版本“嵩山版”,咱们少林寺见真功夫。
请戳这里下载历史开发手册!同时完成七天打卡还有机会赢社区周边!https://developer.aliyun.com/topic/java2020