赠书啦!《阿里巴巴Java开发手册》实体书面世!

前言:《阿里巴巴Java开发手册》将阿里技术团队的经验总结,系统化整理成册,献给广大开发者。如今,该手册的实体书已正式开启预售(此处应有掌声),并在书中独家披露设计规约,它根据阿里巴巴一线架构设计经验沉淀而成,旨在帮助研发人员准确地度量是否需要定向的设计方案。

近年来,敏捷开发的流行,在一定程度上削弱了设计的重要性,但在某些方面,需要明确地进行详细地方案设计与评审,比如:存储方案和底层数据结构的设计。有缺陷的底层数据结构容易导致系统风险高,可扩展性差,重构成本因历史数据迁移、系统平滑过渡也会陡然增加。所以,存储方案和数据结构需要认真地进行设计和评审,生产环境提交执行后,需要进行double check;明确存储介质选型、表结构设计能否满足技术方案、存取性能和存储空间能否满足业务发展、表或字段之间的辩证关系、字段名称、字段类型等。

在其它设计领域,《手册》也明确了软件设计底线,如果超过规定的阈值,则需要进行有针对性的软件设计与文档沉淀。

如果有兴趣了解更多,可参考文末说明,第一时间购得此书,甚至有机会免费获得作者签名版。

今天我们也有幸邀请了作者孤尽,请他来聊聊规约背后的故事与初心。

孤尽:别人都说我们是搬砖的码农,但我们知道自己是追求个性的艺术家。也许我们不会过多在意自己的外表和穿着,但在我们不羁的外表下,骨子里追求着代码的美、系统的美,代码规范其实就是一个对程序美的定义。

但是这种美离程序员的生活有些遥远,尽管编码规范的价值在业内有着广泛的共识,在现实中却被否定得一塌糊涂。工程师曾经最引以为豪的代码,因为编码规范的缺失、命名的草率而全面地摧毁了彼此的信任,并严重地制约了相互的高效协同。工程师一边吐槽别人的代码,一边写着被吐槽的代码,频繁的系统重构和心惊胆战的维护似乎成了工作的主旋律。
那么如何走出这种怪圈呢?众所周知,互联网公司的优势在于效率,它是企业核心竞争力。体现在产品开发领域,就是沟通效率和研发效率。对于沟通效率的重要性,可以从程序员三大“编程理念之争”说起:

  1. 缩进采用空格键,还是Tab键。
  2. if单行语句需要大括号,还是不需要大括号。
  3. 左大括号不换行,还是单独另起一行。

在美剧《硅谷》中,你也许会记得这样一个经典镜头:主人公Richard与同为程序员的女友分手,理由是两人对缩进方式有着不同的习惯,互相拧巴地鄙视着对方的cody style。Tab键和空格键的争议在现实编程工作中确实存在。《阿里巴巴Java开发手册》(以下简称“《手册》”)明确地支持了4个空格的做法,如果一定要问理由,没有理由,因为能够想出来的理由,就像最坚固的盾一样,总有更加锋利的矛会戳破它。只想说,一致性很重要,无边无际争论的时间成本与最后的收益是成反比的。

if单语句是否需要换行,也是争论不休的话题。相对来说,写过格式缩进类编程语言的开发者,更加习惯于不加大括号。《手册》中明确if/for单行语句必须加大括号,因为单行语句的写法,容易在添加逻辑时引起视觉上的错误判断。此外,if不加大括号还会有局部变量作用域的问题。

左大括号是否单独另起一行?因为Go语言的强制不换行,在这点上,“编程理念之争”的销烟味没有那么浓。如果一定要给一个理由,那么换行的代码可以增加一行,对于按代码行数考核工作量的公司员工,肯定倾向于左大括号前换行。《手册》明确左大括号不换行。

这些理念之争的本质就是自己多年代码习惯生的茧,不愿意对不一样的风格妥协,不愿意为了团队的整体效能提升而委屈自己。其实,很多编程方式客观上没有对错之分,一致性很重要,可读性很重要,团队沟通效率很重要。

有一个理论叫帕金森琐碎定律:一个组织中的成员往往会把过多的精力花费在一些琐碎的争论上。程序员天生需要团队协作,而协作的正能量要放在问题的有效沟通上。个性化应尽量表现在系统架构和算法效率的提升上,而不是在合作规范上进行纠缠不休的讨论、争论,最后没有结论。规范不一,就像下图中的小鸭子和小鸡对话一样,言语不通,一脸囧相。

鸡同鸭讲也恰恰形容了人与人之间沟通的痛点,自说自话,无法达成一致意见。再举个生活中的例子,交通规则靠左行还是靠右行,两者孰好孰坏并不重要,重要的是必须要在统一的方向上通行,表面上限制了自由,但实际上是保障了公众的人身安全。试想,如果没有规定靠右行驶,那样的路况肯定拥堵不堪,险象环生。同样,过分自由随意、天马行空的代码会严重地伤害系统的健康,影响到可扩展性及可维护性。

为了帮助开发人员更好地提高研发效率,阿里巴巴集团基于《手册》内容,独立研发了一套自动化IDE检测插件。该插件在扫描代码后,将不符合《手册》的代码按block/critical/major三个等级显示在下方;编写代码时,还会给出智能实时提示,告诉你代码如何编写可以更优雅、更符合大家共同的编程风格;对于历史代码,部分规则实现了批量一键修复功能。

插件下载地址:github.com/alibaba/p3c

测一测阿里巴巴编码规范是否掌握:click.aliyun.com/m/3079

如何预定此书?

天猫预售链接:detail.tmall.com/item.h

如何免费获得此书?

在留言区,聊一聊你为什么想看这本书,就有机会免费获得作者签名版的《阿里巴巴Java开发手册》一本,限量5名。

活动时间:即日起至12月25日,获奖名单届时将在留言区公布。

更多技术干货敬请关注云栖社区知乎机构号:阿里云云栖社区 - 知乎

编辑于 2017-12-18 16:27