现在业界java代码的规范比较混乱,阿里巴巴开发整理的阿里巴巴Java开发手册能够促使整体行业代码规范水平得到提高,使Java开发更高效、更加容错、更加具有协作性,提升协作效率,提高代码质量,降低代码维护成本。
阿里巴巴Java开发手册最新版给各位程序猿们带来下载。
相关介绍:
《阿里巴巴Java开发手册》是阿里巴巴的内部编码规范,阿里官方的Java代码规范标准, 手册以Java应用开发为维度,分为编程规约、异常日志规约、MYSQL规约、工程规约、安全规约五个章节,给出了强制、推荐、参考三个级别,每条规范都有推荐的约束力度,从命名到项目拆分,不仅规范了一些开发细节,也提出了很多工程开发的哲学,值得好好阅读。
阿里巴巴集团推出的《阿里巴巴Java开发手册(正式版)》是阿里巴巴近万名开发同学集体智慧的结晶,以开发视角为中心,详细列举如何开发更加高效、更加容错、更加有协作性,力求知其然,更知其不然,结合正反例,让Java开发者能够提升协作效率、提高代码质量。
部分提纲:
一、编程规约
1.如果使用到了设计模式,建议在类名中体现出具体模式
将设计模式体现在名字中,有利于阅读者快速理解架构设计思想。
2.相同参数类型,相同业务含义,才可以使用 Java 的可变参数,避免使用 Object
可变参数必须放置在参数列表的最后,尽量不用可变参数编程。
3.对外暴露的接口签名,原则上不允许修改方法签名,避免对接口调用方产生影响
接口过时必须加@Deprecated 注解,并清晰地说明采用的新接口或者新服务是什么。
4.关于基本数据类型与包装数据类型的使用标准如下
1) 所有的POJO类属性必须使用包装数据类型
2) RPC方法的返回值和参数必须使用包装数据类型
3) 所有的局部变量【推荐】使用基本数据类型
POJO 类属性没有初值是醒使用者在需要使用时,必须自己显式地进行赋值,任何 NPE 问题,或者入库检查,都由使用者来保证。数据库的查询结果可能是null,因为自动拆箱,用基本数据类型接收有NPE风险。
5.注意 serialVersionUID 不一致会抛出序列化运行时异常
序列化类新增属性时,请不要修改 serialVersionUID 字段,避免反序列失败;如果完全不兼容升级,避免反序列化混乱,那么请修改 serialVersionUID 值。
6.POJO 类必须写 toString 方法
使用 IDE 的中工具:source> generate toString 时,如果继承了另一个 POJO 类,注意在前面加一下 super.toString。 在方法执行抛出异常时,可以直接调用 POJO 的 toString()方法打印其属性值,便于排查问题。
7.final 可提高程序响应效率,声明成 final 的情况:
1) 不需要重新赋值的变量,包括类属性、局部变量
2) 对象参数前加final,表示不允许修改引用的指向
3) 类方法确定不允许被重写
8.慎用 Object 的 clone 方法来拷贝对象
对象的 clone 方法默认是浅拷贝,若想实现深拷贝需要重写 clone 方法实现属性对象 的拷贝。
9.类成员与方法访问控制从严
1) 如果不允许外部直接通过new来创建对象,那么构造方法必须是private
2) 工具类不允许有public或default构造方法
3) 类非static成员变量并且与子类共享,必须是protected 4) 类非static成员变量并且仅在本类使用,必须是private
5) 类static成员变量如果仅在本类使用,必须是private
6) 若是static成员变量,必须考虑是否为final
7) 类成员方法只供类内部调用,必须是private
8) 类成员方法只对继承类公开,那么限制为protected
任何类、方法、参数、变量,严控访问范围。过宽泛的访问范围,不利于模块解耦。思考:如果是一个 private 的方法,想删除就删除,可是一个 public 的 Service 方法,或者一个 public 的成员变量,删除一下,不得手心冒点汗吗?变量像自己的小孩,尽量在自己的视线内,变量作用域太大,如果无限制的到处跑,那么你会担心的。
10.ArrayList的subList结果不可强转成ArrayList,否则会抛出ClassCastException 异常
subList 返回的是 ArrayList 的内部类 SubList,并不是 ArrayList ,而是 ArrayList 的一个视图,对于SubList子列表的所有操作最终会反映到原列表上。
新版改动:
1、增加手册前言;
2、增加版本历史;
3、增加专有名词解释。
- PC官方版
- 安卓官方手机版
- IOS官方手机版