TECHGUIDE技术解析
年2月8日,阿里团队对外公开了一份《阿里巴巴Java开发手册(正式版)》,即阿里官方的Java代码规范标准,希望提升行业规范水平,提高业内开发效率。当然最终应该还是旨在以此树立阿里大企业形象,增强技术圈号召力。
该手册全文30多页,内容从基本的编码规范,到特定的场景应用规约,具有比较高的可实践性和参考价值。
由于该手册会持续更新,建议点击阅读原文下载最新文档(需要登录阿里云账号)。本文基于1.0.1版本。
1命名规范
阿里的命名规范主要选择了驼峰命名风格,即单词首字母大写,其它命名规则与主流规则基本一致。
其中第8条提到:“POJO类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误”,并说明了导致错误的原因是属性isSuccess与其默认的获取方法isSuccess()同名,因此会导致异常。文中没有举例说明应该采用的命名,就isSuccess来说,建议命名为success即可。
在命名中体现设计模式:OrderFactory、LoginProxy、ResourceObserver等。
接口中方法和属性不加任何修饰符号:接口中的属性的默认是publicstaticfinal、方法是publicabstract,而接口中不能使用private和protect关键字,因此可省略以保持简洁。
各层命名规则比较实用:
A)Service/DAO层方法命名规约
1)获取单个对象的方法用get做前缀。
2)获取多个对象的方法用list做前缀。
3)获取统计值的方法用count做前缀。
4)插入的方法用save(推荐)或insert做前缀。
5)删除的方法用remove(推荐)或delete做前缀。
6)修改的方法用update做前缀。
B)领域模型命名规约
1)数据对象:xxxDO,xxx即为数据表名。
2)数据传输对象:xxxDTO,xxx为业务领域相关的名称。
3)展示对象:xxxVO,xxx一般为网页名称。
4)POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。
2格式规范
if/for/while/switch/do等保留字与左右括号之间都必须加空格。
任何运算符左右必须加一个空格。
缩进采用4个空格,禁止使用tab字符(除非IDE中已经设置tab为4个空格)。
3注释规范
主要使用Javadoc规范。
类、类属性、类方法、所有抽象方法都需要添加注释。
所有的类都必须添加创建者信息,对于文件修改者,不用记录,只要在修改处添加必要的说明注释和注释人信息即可。
抽象方法的注释除了返回值、参数、异常说明外,还必须指出该方法做什么事情,实现什么功能。如有实现要求和注意事项也应一并注明。
TODO和FIXME:需要记录标记人,标记时间,预计处理时间(可选)。
4其它要点
避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。
不能使用过时的类或方法。
所有的相同类型的包装类对象之间值的比较,全部使用equals方法比较。此处文档中说明了包装类使用==进行比较,会在一定情况下出错,具体解释可参看文档第6页第7项。
所有的POJO类属性必须使用包装数据类型。所有的局部变量使用基本数据类型。
定义DO/DTO/VO等POJO类时,不要设定任何属性默认值。
构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在init方法中。
POJO类必须写toString方法。在方法执行抛出异常时,可以直接调用POJO的toString()方法打印其属性值,便于排查问题。
循环体内,字符串的联接方式,使用StringBuilder的append方法进行扩展。此条规范实践性强,设计性能优化,建议实践。
final可提高程序响应效率,声明成final的情况:
1)不需要重新赋值的变量,包括类属性、局部变量。
2)对象参数前加final,表示不允许修改引用的指向。
3)类方法确定不允许被重写。
慎用Object的clone方法来拷贝对象。
以上是简要摘录的部分实用规范,整个文档看下来,可以说还是干货满满的,其中对于集合、并发等业务的一些规范,已经可以作为性能优化的解决方案了。
不过毕竟是干货,要想实践还是需要仔细研读的,建议技术部门可以安排半天到一整天,统一进行这份文档的学习讨论会,一定会有很大的反响和帮助。
阿里的这份JAVA规范也可以看出后续还有非常多的规范可以补充,希望大家时不时地上去看看是否有更新,毕竟这是一个互联网巨头赖以生存的宝贵经验和总结。