阿里代码规范阅读笔记

本文主要介绍了阿里Java编程规约中的一些关键点,包括类名与异常命名规范、布尔变量命名、枚举命名、equals与hashCode的使用、循环中的字符串拼接、线程池的创建与使用、volatile关键字的作用以及switch语句对String的支持等,旨在提升代码质量和并发安全性。
摘要由CSDN通过智能技术生成
编程规约

6。【强制】抽象类名用Abstract 或 Base 开头;异常类名用Exception结尾;测试类以要测试的类名 + Test后缀
规范和集合源码的规范一致,如ArrayList就继承了AbstractList,LinkedList继承了AbstractSequentialList,以及AbstractSet,AbstractMap等等
实习时测试代码全写到一个类(逃
8。 【强制】POJO类中布尔类型变量都不要加is前缀,否则部分框架解析时会引起序列化错误
boolean isSuccess; 用IDEA自动生成getter方法时,方法是 public boolean isSuccess() {...} ,然而boolean success;生成的也是这个;
所以一些框架根据getter方法名反向解析会解析到 success这个域名
为嘛不生成isIsSuccess? 是因为奇怪吗

13。 在常量与变量命名时,表示类型的名词放在词尾
eg. ArrayDeque, PriorityQueue, XXXCOUNT

14。如果在类中用到了设计模式,要体现在命名上
eg. Factory, AbstractFactory,Singleton,Builder,Prototype,Adapter,Bridge,Filter,Composite,Decorator,Facade,Flyweight,Proxy,Chain of Responsibility(???),Command,Interpreter,Iterator,Mediator,Memento,State,Observer,Strategy,Template,Visitor

17。枚举类名带上Enum后缀,枚举成员名称需要全大写,单词间用下划线隔开。
枚举是特殊的类,成员变量全为类常量,而且构造方法强制为私有
eg.

public enum BooleanEnum {
   
    TRUE,FALSE;
}

会被编译成

public static final BooleanEnum TRUE;
    descriptor: LBooleanEnum;
    flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM

  public static final BooleanEnum FALSE;
    descriptor: LBooleanEnum;
    flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM

6。 equals 容易报空指针异常,应使用常量或确定的值来调用equals。 eg. "test.equals(s)";
7。 Integer之间的比较,全部用equals方法

Integer a = 1, b = 1;
System.out.println(a == b);

上面两行代码编译后的字节码是:

 0: iconst_1
 1: invokestatic  #2                  // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
 4: astore_1
 5: iconst_1
 6: invokestatic  #2                  // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
 9: astore_2
10: getstatic     #3                  // Field java/lang/System.out:Ljava/io/PrintStream;
13: aload_1
14: aload_2
15: if_acmpne     22
18: iconst_1
19: goto          23
22: iconst_0
23: invokevirtual #4                  // Method java/io/PrintStream.println:(Z)V
26: return

15行:if_acmpne 语义是比较栈顶两引用的数值(即地址)是否相等,不等则跳转
故 == 对于Integer来说是比较引用而不是值

8。float, double(浮点数)之间的等值判断不能用 ==,包装类不

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值