阿里巴巴java规范检查_阿里巴巴Java开发规范

>[info] 1.【强制】POJO 类中布尔类型的变量,都不要加 is。

否则部分框架解析会引起序列化错误。

反例:定义为基本数据类型 `boolean isSuccess`;的属性,它的方法也是 `isSuccess()`,RPC 框架在反向解析的时候,“以为”对应的属性名称是 `success`,导致属性获取不到,进而抛出异 常。

>[danger] 2.【推荐】接口类中的方法和属性不要加任何修饰符号(public 也不要加)

保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。

>[warning] 3.【参考】各层命名规约

**Service/DAO 层方法命名规约**

1. 获取单个对象的方法用 `get` 做前缀。

2. 获取多个对象的方法用 `list` 做前缀.

3. 获取统计值的方法用 `count` 做前缀。

4. 插入的方法用 `save`(推荐)或 `insert` 做前缀。

5. 删除的方法用 `remove`(推荐)或 `delete` 做前缀。

6. 修改的方法用 `update` 做前缀。

**领域模型命名规约**

1. 数据对象:`xxxDO`,xxx 即为数据表名。

2. 数据传输对象:`xxxDTO`,xxx 为业务领域相关的名称。

3. 展示对象:`xxxVO`,xxx 一般为网页名称。

4. `POJO` 是 `DO/DTO/BO/VO` 的统称,禁止命名成 `xxxPOJO`。

>[success] 4.基本类型与包装类型的使用标准

【强制】所有的 `POJO` 类属性必须使用包装数据类型

【强制】RPC 方法的返回值类型和参数必须使用包装数据类型

【推荐】所有的局部变量使用基本数据类型

> 说明:`POJO` 类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何

> NPE 问题,或者入库检查,都由使用者来保证。

> 正例:数据库的查询结果可能是 null,因为自动拆箱,用基本数据类型接收有 NPE 风险。

> 反例:比如显示成交总额涨跌情况,即正负 x%,x 为基本数据类型,调用的 RPC 服务,调用

> 不成功时,返回的是默认值,页面显示为 0%,这是不合理的,应该显示成中划线。所以包装

> 数据类型的 null 值,能够表示额外的信息,如:远程调用失败,异常退出。

>[info] 5.【强制】`POJO`类必须写`toString`方法。

使用IDE中的工具,自动生成,如果继承了另一个`POJO`,注意在前面加一下`super.toString`。

使用了`JPA/Hibernate`框架,不要使用 Lombok 的`@toString`注解,有循环调用导致内存溢出的 bug。

>[warning] 6.使用索引访问String的split方法得到的数组时,需做最后一个分隔符后有无内容的检查,否则会有抛`IndexOutOfBondsException` 的风险.

>[success] 7.【推荐】循环体内,字符串的连接方式,使用`StringBuilder` 的 `append` 方法进行扩展。

说明:反编译出的字节码文件显示每次循环都会 `new` 出一个 `StringBuilder` 对象,然后进行

`append` 操作,最后通过 `toString` 方法返回 `String` 对象,造成内存资源浪费。

反例:

```java

String str = "start";

for (int i = 0; i < 100; i++) {

str = str + "hello";

}

```

>[danger] 8.【推荐】`final` 可以声明类、成员变量、方法、以及本地变量,下列情况使用 `final` 关键字:

1. 不允许被继承的类,如:`String` 类。

2. 不允许修改引用的域对象,如:`POJO` 类的域变量。

3. 不允许被重写的方法,如:`POJO` 类的 `setter` 方法。

4. 不允许运行过程中重新赋值的局部变量。

5. 避免上下文重复使用一个变量,使用 `final` 描述可以强制重新定义一个变量,方便更好

地进行重构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值