阿里云大学 关注
手机版
  1. 云栖社区>
  2. 阿里云大学>
  3. 博客>
  4. 正文

【Java编码规范】《阿里巴巴Java开发手册》终极版更新,IDE插件即将发布

云木西 2017-02-08 17:01:38 浏览416894 评论121 发表于: 阿里云大学

java 阿里巴巴 开发手册 研发协同

摘要: 阿里巴巴集团推出的《阿里巴巴Java开发手册》是阿里巴巴近万名开发同学集体智慧的结晶,以开发视角为中心,详细列举如何开发更加高效、更加容错、更加有协作性,力求知其然,更知其不然,结合正反例,让Java开发者能够提升协作效率、提高代码质量。

        -------------- 2017.9.25更新 --------------


《阿里巴巴Java开发手册(终极版)》正式发布,这是史上内容最全、修正最为彻底的一个版本,并且增加了单元测试规约内容,这也是阿里官方对外发布的最后一个PDF版本,值得收藏。

 

《阿里巴巴Java开发手册》是阿里内部Java工程师所遵循的开发规范,涵盖编程规约、单元测试规约、异常日志规约、MySQL规约、工程规约、安全规约等,这是近万名阿里Java技术精英的经验总结,并经历了多次大规模一线实战检验及完善。这是阿里回馈给Java社区的一份礼物,希望能够帮助企业开发团队在Java开发上更高效、容错、有协作性,提高代码质量,降低项目维护成本。


点击下载《阿里巴巴Java开发手册》(终极版):https://yq.aliyun.com/attachment/download/?id=2023

考试认证:https://edu.aliyun.com/certification/cldt02


cb114de55d693f6287bccd8a047f137523cbd1f9



单元测试规约

单元测试有助于开发团队有效监测软件模块质量、促进代码深度优化,进而降低线上故障率,长期执行有助于提升项目迭代效率,减少重构成本。此次在终极版本中,阿里根据内部单元测试的实践经验,详细描述了单元测试的相关原则和重要建议:

  • AIR原则:

         A:Automatic,单元测试需要测试框架自动化执行,才有意义。

         I:Independent,单元测试用例之间互相独立,不存在依赖关系。

         R:Repeatable,单元测试可以被重复执行,且结果一致

  • BCDE原则:

         B:Border,边界值测试,包括循环边界、特殊取值、特殊时间点等。

         C:Correct,正确的输入,并得到预期的结果。

         D:Design,与设计文档相结合,来编写单元测试。

         E:Error,强制错误信息输入(如:非法数据),并得到预期的结果。


IDE代码检测插件 

自《阿里巴巴Java开发手册》正式版发布以来,Java开发者就一直关注何时推出IDE代码监测插件。经过研发和内部测试,现在插件终于要和大家见面了——10月14日,杭州云栖大会研发效能峰会场,阿里将正式对外开放插件及源码。

该插件在扫描代码后,将不符合《手册》的代码按block/critical/major三个等级显示在下方;实时编写代码时,还会给出智能提示,告诉你如何编写可以更优雅;对于历史代码,部分规则实现了批量一键修复的功能。是不是很方便? 


「阿里巴巴编码规范」考试认证

阿里云大学结合《阿里巴巴Java开发手册》,推出了「阿里巴巴编码规范」认证,通过在线考试,检测你对手册中开发规范的掌握程度,并发放官方认证证书。

立即考试:https://edu.aliyun.com/certification/cldt02 



------------------------------------------

关于《阿里巴巴Java开发手册》


你是否曾因Java代码规范版本纷杂而无所适从?

你是否想过代码规范能将系统故障率降低20%?

你是否曾因团队代码风格迥异而协同困难?

你是否正在review一些原本可以避免的故障?

你是否无法确定自己的代码足够健壮? 

码出高效,码出质量!

相比C++代码规范业界已经达成共识,Java代码规范业界比较混乱,我们期待这次发布的Java代码规范能够给业界带来一个标准,促使整体行业代码规范水平得到提高,最终能够帮助企业和开发者提升代码质量和降低代码故障率。

 

阿里出品,质量保证!

阿里Java技术团队一手打造出Dubbo、JStorm、Fastjson等诸多流行开源框架,部分已成为Apache基金会孵化项目;

阿里在Java后端领域支撑起全球访问量最大的服务器集群;

Java代码构建的阿里双11业务系统订单处理能力达到17.5万笔/秒;

到目前已累计数亿行高并发、高稳定性的最佳Java代码实践;

……

此次公开的Java开发手册正是出自这样的团队,近万名阿里Java技术精英的经验总结,并经历了多次大规模一线实战检验及完善,铸就了这本高含金量的阿里Java开发手册。该手册以Java开发者为中心视角,划分为编程规约、异常日志规约、MYSQL规约、工程规约、安全规约五大块,再根据内容特征,细分成若干二级子目录。根据约束力强弱和故障敏感性,规约依次分为强制、推荐、参考三大类。此套规范不仅能让代码一目了然, 更有助于加强团队分工与合作、真正提升效率。 


无规矩不成方圆 无规范不能协作

众所周知,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全。试想如果没有限速,没有红绿灯,没有规定靠右行驶,谁还敢上路行驶。 

同理,对软件来说,适当的规范和标准绝不是消灭代码内容的创造性、优雅性,而是限制过度个性化,以一种普遍认可的方式一起做事,降低故障率,提升协作效率。开发手册详细列举如何开发更加高效,更加容错,更加有协作性,力求知其然,更知其不然,结合正反例,提高代码质量。比如,异常日志处理时的各种不规范行为;集合转换的各种坑;创建线程池出现的等待队列OOM等。 


阿里技术资深大咖联袂推荐

阿里高级研究员多隆:工程师对于代码,一定要“精益求精”,不论从性能,还是简洁优雅,都要具备“精益求精”的工匠精神,认真打磨自己的作品。 

阿里研究员毕玄:一个优秀的工程师和一个普通工程师的区别,不是现在满天飞的架构图,他的功底就是体现在他写的每一行代码上。 

阿里研究员玄难:代码是软件工程里面的产品设计、系统架构设计等工作的最后承载体,代码的质量决定了一切工作的成败。 

阿里巴巴B2B事业群CTO李纯:好的软件产品离不开工程师高质量的代码及相互间顺畅的沟通与合作。简单,适用的代码规约背后所传递的是技术上的追求卓越、协同合作的精神,是每个技术团队不可缺失的重要利器。 

阿里研究员、HipHop作者:赵海平(花名:福贝):程序员是创造个性化作品的艺术家,但同时也是需要团队合作的工种。个性化应尽量表现在代码效率和算法方面,牺牲小我,成就大我。 


拥抱规范,远离伤害!

开发的同学们赶紧行动起来,遵守代码规范,你好,我好,大家好! 


关注云栖社区微信公众号:

2adbbb40545618044d6ebff62c513480e7591581

本文为云栖社区原创内容,未经允许不得转载,如需转载请发送邮件至yqeditor@list.alibaba-inc.com;如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

用云栖社区APP,舒服~

【云栖快讯】红轴机械键盘、无线鼠标等753个大奖,先到先得,云栖社区首届博主招募大赛9月21日-11月20日限时开启,为你再添一个高端技术交流场所  详情请点击

网友评论

21F
jnblue

非常支持!

22F
小羽_

支持,努力的学习中,没事就多看看,直到收发自如

23F
顺其孜然

阿里团队就是比 TX 团队更具有开源精神,看好阿里哦

24F
故乡的牛

oop规约中,第8条的第一项是基于什么考虑???

屏峰远望

编译效率和理解成本。

评论
25F
云木西

参与Java规范的有奖讨论:https://yq.aliyun.com/roundtable/47961

wang15959099 赞同
26F
系统提示

好东西,

27F
zhuyuuuu

回过头来看看

28F
ihuotui

可以,都是及格的程序员的习惯。
其实还有一点,就是单元测试 的内容没有说。应该要求单元测试保证代码可测。

努力努力!屏峰远望 赞同
29F
蘭小志的志

业界良心

(来自社区APP)
30F
小茗

学习学习了

(来自社区APP)
31F
lnyx

那么有 JavaScript 的同学来一份规范吗

32F
herder

有没有PHP的?这个规范包含mysql和安全规约,适用其他语言开发。

(来自社区APP)
33F
汉壹嘉

这个就厉害了,虽然很佩服谷歌,但是,也很期待我们的阿里云崛起,来吧,让中国的科技也崛起!

34F
双面胶囊

Can I have the English version? Appreciate!!!!

35F
mytsing520

是必须有这样的一个流程,无论是已经在公司的开发,还是新来的

36F
flxxy

希望有js php规范

(来自社区APP)
37F
周建刚

不错。java这个东西就是太慢了。特别是安卓什么开发环境。。

38F
neojg

对应的checkstyle配置文件能提供吗?

不不不度 赞同
不不不度

严重赞成

大城小艾

赞同

评论
39F
seanlook

MySQL规约中,“【强制】在 varchar 字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据
实际文本区分度决定索引长度”,是什么鬼,指定了索引长度,就没办法 order by/group by 这个索引列,最好要提示一下

屏峰远望

varchar存储的字符数超过200的话,没有必要建立索引的长度也为200,一般20即可。

评论
40F
晓の水平线

学习……

关注
云木西
云计算、大数据、人工智能技术之路上的徒步者
57篇文章|572关注
大数据开发套件(Data IDE),提供可视化开发界面、离线任务调度运维、快速数据集成、多人协同工作等功能,为您...

一种高性能、高可靠、可平滑扩容的分布式内存数据库服务。

云数据库 HBase 版(ApsaraDB for HBase)是基于 Hadoop 的一个分布式数据库,支持海...

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...