阿里心法之alibaba Java开发手册 – 节选
前言
对于开发手册、编程规范这一类东西,第一次接触还是在大一的时候,是学长还有技术交流群中的人推荐的,建议在正式参与开发之前,读一读大厂的开发手册会有很多收获。但是当时的编程水平有限,对计算机科学体系的认知也很浅薄,所以,虽然读了一些华为的《C/C++编程规范》,但是收获也只限于“写大括号时左括号不换行”这种浅层次的收获,后来开始Java方向的学习后,也有听说过《阿里巴巴Java开发手册》,但是由于以前的错误认识,也就没有仔细了解。
前段时间组里对我的代码进行检视,组里的代码老司机对我的代码提出了很多意见和建议,说实话,在使用Java进行后端开发的将近两年中,代码规范这个问题一直不够重视,开始不会写的时候就是照葫芦画瓢,后来对Java了解的更多的时候,就开始纠结怎么写才更规范更美观,但是一直没能找到答案,只能按照自己的理解和感觉去写,事实证明,我自己的理解还不够到位,所以决定买一本《阿里巴巴Java开发手册》来看看。
阿里巴巴与Java
阿里巴巴作为国内首屈一指的互联网公司,一直非常喜欢Java,其积极参与Java社区,并贡献了很多的Java开源项目,对Java生态的构建做出了很大的贡献。同时,阿里巴巴又是JCP(Java Community Process)的最高执行委员会成员,说明其Java水平也得到了全球的认可。
意义
程序员的天性是自由,没有人愿意让自己和自己的代码被束缚,但编程规范的统一并不是抑制个性的表现,因为作为团队中的一员需要更高效的协作,而个性化应尽量表现在系统架构和算法效率的提升上。规范的制定,对于江湖新人,是指引方向,如何开发才能让代码更清晰更稳健;对于武林高手,则是提升效率,发展个性的同时保证共性,拒绝琐碎的争论。
总而言之,代码规范的意义就是:尽量规避错误,提高规范性,保证一致性,增强可读性,从而提高团队效率。
内容节选
《阿里巴巴Java开发手册》全本分为7章,共112页,全部放到本文中将没有任何意义,接下来将节选几个印象较为深刻的条目进行分享。
杜绝完全不规范的缩写,避免词不达意【强制】
对应原书p5。这一条一般指在对自定义编程元素进行命名时需要注意,对于目录的命名要求则较弱一些。一个较为常见的反例是:AbstractClass“缩写”命名成AbsClass,condition“缩写”命名成condi,此类随意缩写严重降低了代码的可读性,应尽量使用完整的单词组合来表达意思,达到代码自解释的目标。在JDK中,对某个对象引用的volatile字段进行原子更新的类名为AtomicReferenceFieldUpdater,虽然名字会显得很长,但是总比叫做Arfu可读性更高。
不允许任何魔法值(即未预先定义的常量)直接出现在代码中【强制】
对应原书p9。例如:
String key = "Id#taobao_" + tradeId;
这样的写法同样严重降低了代码的可读性,对于每个常量应指定对应的常量名,来达到解释常量的目的。且对于不同的常量,应该按功能进行归类,有层次的进行管理和维护。对于范围的常量值,可以使用enum类型来进行定义并使用。
与static final相比的效率是否有差别
单个方法的总行数不超过80行【强制】
对应原书p16。原书对本行的说明是:除注释外的方法签名、左右大括号、方法内代码、空行、回车、以及任何不可见字符的总行数不超过80行。代码的行数太多,容易让人无法理清整体的逻辑,降低可读性,即便是代码的作者回头维护自己的代码时也要花