1. 云栖社区>
  2. 博客列表>
  3. 正文

【Java编码规范】《阿里巴巴Java开发手册(正式版)》更新(v1.1.1版)

云木西 2017-02-08 17:01:38 浏览265731 评论102

java 阿里巴巴 开发手册

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

2017年开春之际,诚意献上重磅大礼:阿里巴巴Java开发手册,首次公开阿里官方Java代码规范标准。这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大降低代码维护成本。

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

v1.1.1版更新说明:修正页码总数和部分示例。

 (版本不断更新中,请收藏本文,以免错过重要更新)

94978f1bf8474dc3b2fe30b0fc0ff29f1e45b277

(点击参与话题讨论: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作者:赵海平(花名:福贝):程序员是创造个性化作品的艺术家,但同时也是需要团队合作的工种。个性化应尽量表现在代码效率和算法方面,牺牲小我,成就大我。 


拥抱规范,远离伤害!

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


【9元建站,点击立享:https://market.aliyun.com/tpldns


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

2adbbb40545618044d6ebff62c513480e7591581

用云栖社区APP,舒服~

【云栖快讯】《阿里持续集成与持续交付最佳实践》系列直播来啦!解析痛点与挑战、研究案例,摆脱手工作坊式研发,赶紧报名!  详情请点击

网友评论

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

超过10,000,000域名在这里注册

国内建站市场NO.1

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

阿里云免费套餐上线!