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

【Java编码规范】《阿里巴巴Java开发手册》终极版更新,在线代码检测及IDE插件发布

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

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

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

        -------------- 2017.10.14更新 --------------


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

 

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


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

考试认证&在线代码检测:https://edu.aliyun.com/certification/cldt02

IDE插件下载:https://github.com/alibaba/p3c


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,舒服~

【云栖快讯】哪个编程语言最热门?各个专业领域的技术趋势是什么?如何才能更快速的踏上技术进阶之路……云栖社区2017中国开发者大调查火热进行!答卷可抽奖,红轴机械键盘、天猫精灵,丰富好礼大概率抽取  详情请点击

网友评论

41F
gao本

很好的东西,感谢这样有责任有担当的企业,只有这样整个社会才会快速进步

42F
raorihong

有没有php的呢?

43F
nick.yuan

真是受益匪浅

(来自社区APP)
44F
jiankangbeijing

只有正确实现了业务需求,并且符合架构设计的代码才能称之为优秀的活代码,否则即使写的再优雅也是死的!

(来自社区APP)
45F
小鬼谷子

阿里引领DT时代

(来自社区APP)
46F
她的小小猪

JQuery对象怎么命名啊?
我一般都是用$符号开头的

47F
星光似霰

学习了

48F
芝麻谷
  1. 【推荐】循环体内,字符串的联接方式,使用 StringBuilder 的 append 方法进行扩展。 反例: String str = "start"; for(int i=0; i<100; i++){ str = str + "hello"; } 说明:反编译出的字节码文件显示每次循环都会 new 出一个 StringBuilder 对象,然后进行 append 操作,最后通过 toString 方法返回 String 对象,造成内存资源浪费。

第十七条的这个说明说的是什么 为什么和反例对不上

一个人螃蟹

请问你工作多久了

一个人螃蟹

他的意思是让你看反编译的字节码分析jvm是如何处理的,正例赘述内容太多,不容易说明问题,反正我是看懂了

评论
49F
芝麻谷

我也推荐谷歌的规范

50F
jeeklin

哇哈哈

51F
cap丨jacv

好像很牛,我刚学Java.有帮助吗?

(来自社区APP)
52F
小克思

做标杆了!

53F
starstar998

顶起

54F
tianwei02

不够全,还不如我们公司的规范手册。

比如我们公司规定:
1、代码单行不允许超过整个屏幕的一半,方便垂直拆分视图阅读。
2、方法的名词和动词需要有约束,比如 “删除用户”是一个动词,是可以作为方法名。若当前类是“用户”,是方法直接写成“删除”而不需要携带“用户”。再比如,事件名称,过去式和进行时是有区别的,同时需要名词在前动词在后。比如 UserDeleted 和 UserDeleting 的关系。
诸如此类,希望再接再厉继续补充哈。。。

糗蛋网tianwei02 赞同
55F
scruel

请问阿里的大佬们啊,能不能在更新的时候标注下更新了具体那些内容啊?方便以前看过文档的人校对~

孤尽

在下载的PDF版本最后的附1,详细说明了当前版本的更新点。

scruel

好的谢谢!

评论
56F
tiankonghewo

必须支持,先看一遍再说

57F
chengning

赞,看似基础,实则值得细细品味!

58F
初心永恒1

很好,赞一个

59F
neo.he

在规范中倡导的前提下,为什么还不提倡用可变参数编程,毕竟入参的时候写起来更加简洁,不用区分是数组还是可预知的参数个数

孤尽

只是不提倡,如果满天飞的可变参数,对写是舒服,对维护的人来说是一件头疼的事情。

评论
60F
东方太阳☀

半路出家的小白,有没有大腿抱抱。

(来自社区APP)
关注
云木西
云计算、大数据、人工智能技术之路上的徒步者
58篇文章|588关注
兼容Jenkins标准,可提供快速可靠的持续集成与持续交付服务。基于容器技术和阿里云基础服务架构,提供稳定和安全...

云数据库HybridDB(ApsaraDB HybridDB)是一种在线MPP大规模并行处理数据仓库服务。云数据...

提供基于开源Elasticsearch及商业版X-pack插件,致力于数据分析、数据搜索等场景服务。在开源Ela...

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