阿里巴巴代码规约学习笔记

格式规约

1.boolean 类型的变量不要以 is 开头

image.png

3.Long 类型赋值时后面加 L

Long a = 2L;

4.不要出现魔数,魔数用常量表示,常量每个单词大写,并用下划线隔开,力求语义表达完整清楚,不要嫌名字长。

5.常量值在一定范围内,用枚举表示

6.一个方法的代码不要过长,该抽出来的抽出来

7.接口变量:public static final,接口方法:public abstract,大家都知道的,就没必要累赘。这些都是默认有的,不必自己再写一遍。

8.【推荐】如果是形容能力的接口名称,取对应的形容词为接口名(通常是–able 的形容词)。

正例:AbstractTranslator 实现 Translatable 接口。

9.【推荐】不要使用一个常量类维护所有常量,要按常量功能进行归类,分开维护。

10.常量:

image.png

image.png

11.代码风格,if () 两者之间有一个空格

12.【强制】在进行类型强制转换时,右括号与强制转换值之间不需要任何空格隔开。

正例:

long first = 1000000000000L;

int second = (int)first + 2;

13.不同逻辑、不同语义、不同业务的代码之间插入一个空行分隔开来以提升可读性。

14.转义字符也要注意,比如

String a[]=str.split("\.");

将字符串进行划分,因为正则表达式中的点(.)是一个特殊字符,它表示任意字符(除了换行符)。为了表示字面上的点(.),你需要用反斜杠(\)进行转义,但在 Java 字符串中,反斜杠也是一个转义字符,因此你需要使用两个反斜杠(\\)来表示一个字面上的反斜杠。

15.返回给前端的最后是一个对象,不要用基本类型,如果是空对象就返回集合的空 list

面向对象规约

image.png

  1. 接口过时必须加 @Deprecated 注解,并清晰地说明采用的新接口或者新服务是什么。

    image.png

  2. equals,JDK1.7 之后推荐使用 Objects.equals

  3. 浮点型比较

    image.png

    image.png

image.png

image.png

5.image.png

6.【强制】序列化类新增属性时,请不要修改 serialVersionUID 字段,避免反序列失败;如果完全不兼容升级,避免反序列化混乱,那么请修改 serialVersionUID 值。

如果在原来的基础上新增了字段,没事,还可以复用之前旧的 uid,如果修改了之前的字段的类型或者删除了某个字段,那么 uid 也需要变动

  • 核心原则 :仅在不兼容变更时强制修改 serialVersionUID,兼容变更可保留。
  • 最佳实践 :显式管理版本号,结合变更类型和业务需求决定是否更新。频繁更新可能增加维护成本,但能减少潜在风险。

7.image.png

8.Java 的 String.split(String regex) 方法默认调用 split(regex, 0) ,其中 limit=0 表示尽可能多地分割字符串,但同时会丢弃末尾的空字符串

通过显式设置 limit 参数为负数 (如 -1),强制保留所有分割结果,包括末尾的空字符串

9.image.png

private 修饰的方法只在本类中使用,删了可能不会有影响,也在自己的控制范围内,但是如果是 public 的方法,随意删除,可以会出现很大的问题

10.subList 的操作会影响到原来的集合内容,如

// 如果子集合往自身加元素会影响到原集合

//如果子集合,已经使用了,然后又对原集合添加元素,就会报错,因为此时再在原集合上加元素,子集合的值就会顺序错乱

补充

1.countDownLatch,相当于一个异步转同步的工具,多个线程异步执行,都要调用 countDown 方法,当所有异步线程都执行了 countDown 方法后,主线程才会执行 await 方法,进而才会走接下来的逻辑。

2.使用随机数函数时,不要使用 “* 100” 这种形式的,有一个方法 nextLong(100)或者 nextInt(100),效果是相同的。

3.try catch 的时候,不要一下把所有的代码都扩进去,只 try 必要的代码。进入到 catch 一定要做处理,再不济也要抛个异常。

4.不要在 finally 中使用 return

5.单元测试的粒度要足够小

6.controller 层的入参要判空,sevice 层的方法入参尽量要判空

工作中记录

1.给前端返回的结果一定要是对象

2.发布到线上的时候,看一下上一个发布的分支是那个,然后合并到它上面再发布,因为有可能不是发布的 master 分支

  • 代码
    470 引用 • 591 回帖 • 9 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...