wzhongy 的个人博客

记录美好瞬间

不急功近利,不止步不前,脚踏实地,慢慢来!
  menu
11 文章
0 浏览
3 当前访客
ღゝ◡╹)ノ❤️

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

格式规约

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分支


标题:阿里巴巴代码规约学习笔记
作者:wzhongy
地址:http://www.wzhongy.club/articles/2025/05/24/1748051926525.html