阿⾥云的java规范_阿⾥强制要求的21条Java开发规范,可以
避免很多坑
1. 【强制】避免通过⼀个类的对象引⽤访问此类的静态变量或静态⽅法,⽆谓增加编译器解析成本,直
接⽤类名来访问即可。
2. 【强制】所有的覆写⽅法,必须加@Override注解。 说明:getObject()与get0bject()的问题。⼀个是字母的O,⼀个是数字的0,加@Override可以准确判断是否覆盖成功。另外,如果在抽象类中对⽅法签名进⾏修改,其实现类会马上编译报错。
3. 【强制】相同参数类型,相同业务含义,才可以使⽤Java的可变参数,避免使⽤Object。 说明:可变参数必须放置在参数列表的最后。(提倡同学们尽量不⽤可变参数编程) 正例:public List listUsers(String type, ids) {...}
4. 【强制】外部正在调⽤或者⼆⽅库依赖的接⼝,不允许修改⽅法签名,避免对接⼝调⽤⽅产⽣影响。接⼝过时必须加@Deprecated注解,并清晰地说明采⽤的新接⼝或者新服务是什么。
5. 【强制】不能使⽤过时的类或⽅法。 说明:java.URLDecoder 中的⽅法decode(String encodeStr) 这个⽅法已经过时,应该使⽤双参数decode(String source, String encode)。接⼝提供⽅既然明确是过时接⼝,那么有义务同时提供新的接⼝;作为调⽤⽅来说,有义务去考证过时⽅法的新实现是什么。java的tostring方法
6. 【强制】Object的equals⽅法容易抛空指针异常,应使⽤常量或确定有值的对象来调⽤equals。 正
例:"test".equals(object); 反例:object.equals("test"); 说明:推荐使⽤java.util.Objects#equals(JDK7引⼊的⼯具类)
7. 【强制】所有的相同类型的包装类对象之间值的⽐较,全部使⽤equals⽅法⽐较。 说明:对于Integer var = ? 在-128⾄127范围内的赋值,Integer对象是在IntegerCache.cache产⽣,会复⽤已有对象,这个区间内的Integer值可以直接使⽤==进⾏判断,但是这个区间之外的所有数据,都会在堆上产⽣,并不会复⽤已有对象,这是⼀个⼤坑,推荐使⽤equals⽅法进⾏判断。
8. 关于基本数据类型与包装数据类型的使⽤标准如下: 1) 【强制】所有的POJO类属性必须使⽤包装数据类型。 2) 【强制】RPC⽅法的返回值和参数必须使⽤包装数据类型。 3) 【推荐】所有的局部变量使⽤基本数据类型。 说明:POJO类属性没有初值是提醒使⽤者在需要使⽤时,必须⾃⼰显式地进⾏赋值,任何NPE问题,或者⼊库检查,都由使⽤者来保证。 正例:数据库的查询结果可能是null,因为⾃动拆箱,⽤基本数据类型接收有NPE风险。 反例:⽐如显⽰成交总额涨跌情况,即正负x%,x为基本数据类型,调⽤的RPC服务,调⽤不成功时,返回的是默认值,页⾯显⽰为0%,这是不合理的,应该显⽰成中划线。所以包装数据类型的null值,能够表⽰额外的信息,如:远程调⽤失败,异常退出。
9. 【强制】定义DO/DTO/VO等POJO类时,不要设定任何属性默认值。 反例:POJO类的gmtCreate
默认值为new Date(),但是这个属性在数据提取时并没有置⼊具体值,在更新其它字段时⼜附带更新了此字段,导致创建时间被修改成当前时间。
10. 【强制】序列化类新增属性时,请不要修改serialVersionUID字段,避免反序列失败;如果完全不兼容升级,避免反序列化混乱,那么请修改serialVersionUID值。 说明:注意serialVersionUID不⼀致会抛出序列化运⾏时异常。
11. 【强制】构造⽅法⾥⾯禁⽌加⼊任何业务逻辑,如果有初始化逻辑,请放在init⽅法中。
12. 【强制】POJO类必须写toString⽅法。使⽤IDE中的⼯具:source> generate toString时,如果继承了另⼀个POJO类,注意在前⾯加⼀下String。 说明:在⽅法执⾏抛出异常时,可以直接调⽤POJO的toString()⽅法打印其属性值,便于排查问题。
13. 【强制】禁⽌在 POJO类中,同时存在对应属性 xxx的 isXxx()和 getXxx()⽅法。 说明: 框架在调⽤属性 xxx
14. 【推荐】使⽤索引访问⽤String的split⽅法得到的数组时,需做最后⼀个分隔符后有⽆内容的检查,否则会有抛IndexOutOfBoundsException的风险。
说明:
String str = "a,b,c,,";String[] ary = str.split(
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论