Java开发手册学习

阿里开发手册-泰山版

代码规范

命名风格

  1. 用英文、驼峰方式命名
  2. 包名小写(linux区分大小写,windows不区分,对部署有影响)
  3. 尽量达到代码自解释的目标(命名用完整的单词)
  4. 接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的 Javadoc 注释。
    尽量不要在接口里定义变量,如果一定要定义变量,确定与接口方法相关,并且是整个应用的基础常量。
  5. 各层命名规约:
    A) Service/DAO 层方法命名规约
    1) 获取单个对象的方法用 get 做前缀。
    2) 获取多个对象的方法用 list 做前缀,复数结尾,如:listObjects。 3) 获取统计值的方法用 count 做前缀。 4) 插入的方法用 save/insert 做前缀。
    5) 删除的方法用 remove/delete 做前缀。
    6) 修改的方法用 update 做前缀。
    B) 领域模型命名规约
    1) 数据对象:xxxDO,xxx 即为数据表名。
    2) 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。
    3) 展示对象:xxxVO,xxx 一般为网页名称。
    4) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。

常量定义

  1. 不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。
  2. 常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量。
    1) 跨应用共享常量:放置在二方库中,通常是 client.jar 中的 constant 目录下。
    2) 应用内共享常量:放置在一方库中,通常是子模块中的 constant 目录下。
    3) 子工程内部共享常量:即在当前子工程的 constant 目录下。
    4) 包内共享常量:即在当前包下单独的 constant 目录下。
    5) 类内共享常量:直接在类内部 private static final 定义。

代码格式

OOP 规约

  1. 尽量不要用可变参数
  2. 外部正在调用或者二方库依赖的接口,不允许修改方法签名,避免对接口调用方产生影响。
    接口过时必须加@Deprecated 注解,并清晰地说明采用的新接口或者新服务是什么。
  3. 不能使用过时的类或方法。
    接口提供方既然明确是过时接口,那么有义务同时提供新的接口;
    作为调用方来说,有义务去考证过时方法的新实现是什么。
  4. 判断相等
    1) 对象及包装类使用equals判、注意NPE
    2) 浮点型要考虑差值判断(二进制无法精准表示浮点型)
  5. 任何货币金额,均以最小货币单位且整型类型来进行存储
    1)还是浮点型数据的锅,可以用BigDecimal
    2)BigDecimal为保证浮点型精度,入参使用String
  6. 基本数据类型与包装数据类型的使用标准如下:
    1)所有的POJO类属性必须使用包装数据类型。
    2)RPC 方法的返回值和参数必须使用包装数据类型。
    3)所有的局部变量使用基本数据类型。
  7. POJO类
    1) 不要设定任何属性默认值
    2) 基本数据类型属性必须是包装类
    3) 必须写 toString 方法
    4) 序列化类新增属性时,请不要修改 serialVersionUID 字段,避免反序列失败.
    5)getter/setter 方法中,不要增加业务逻辑
  8. Object 的 clone 方法来拷贝对象(默认是浅copy,要自己实现深copy)
  9. String
    1) split生成的数组会有空的情况
    2)方法内拼接字符串使用StringBuilder
    3) 与数值转换,使用工具类NumberUtils