阿里巴巴java开发者手册整理(一)

  • 编程规约
    1. 命名风格:驼峰命名
    2. POJO类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误;
      1. 例如: 定义基本类型为Boolean isDeleted ;
    3. 包名一律小写;统一使用单数的方式;类名一律大写,可以含有复数的表示方式;
    4. 尽量使用英文自定义编程元素,表达清楚model,service,dao层;如果模块,接口,类,方法使用了设计模式,在命名的时候要体现出来
      1. 从远程拉取代码的类:PullCodeFromRemoteRepository
      2. OrderFactory;LoginProxy;
    5. 接口定义的时候,尽量不要加上修饰符;并加上Javadoc主是,尽量不要在接口中定义变量;
      1. 接口方法 :Void f()
      2. 接口基础敞亮:String Company = “wenwei”
      3. JDK 8种允许又默认的实现,那么这个default方法,这个default ,是所有实现该接口最有价值的实现;
    6. 接口与类的命名规则:
      1. 接口:保证接口实现的类命名与接口命名一致
      2. 枚举类型加上Enum,枚举类型是特殊的常量类型,构造方法默认强制私有,成员名称:SUCCESS
      3. service/DAO层方法命名
        1. get:获取某个对象的方法的前缀
        2. list: 获取到对象list的方法的前缀
        3. update/modify:修改方法的前缀
        4. Count 统计对象的值的前缀
        5. insert/save;插入一个对象方法的前缀
  • 常量的定义
    1. 不允许有特殊字符出现在常量中
    2. Long或者long初始化的时候,需要增加L;不能小写l;
    3. 常量类需要按照功能放在不同的常量类中;
    4. 如果变量类在一个范围内变化,且带有名称之外的衍生意义,需要增加枚举类型
    5. PushJobToJiraFailed("任务单推送不成功","任务单ID = {0}");

private String subject;
private String msg;

public String getSubject() {
return subject;
}

public String getMsg() {
return msg;
}

EmailSubAndMsgEnum(String subject, String msg) {
this.subject = subject;
this.msg = msg;
}

  • 代码格式
    1. 采用4个空格缩进,禁止使用tab字符;
    2. 任何两目和三目运算符,左右两边都需要加一个空格
    3. // 和注释内容之间,有且仅有一个空格;
    4. 单行代码的字符限制为120,超出部分需要换行;换行的策略
      1. 第二行比第二行缩进4个空格,第三行不在缩进
      2. 运算符(方法调用点符号.)和下文一起缩进;
      3. 多个参数之间的逗号;逗号不能与下文一下缩进;
      4. 括号前不换行;
    5. IDE的text file encoding 设置为UTF-8;IDE中文件的换行符都为unix的格式(LF)(CR)
  • OOP规约
    1. 避免类的对象访问类中的静态常量或者静态方法;
    2. object的equal方法容易抛空指针异常,应使用常量来调用equal;
      1. “test”.equal(object) 采用
      2. 不采用object.equal(“test”)
    3. 关于基本类型与包装类型的使用标准如下:
      1. 强制所有的POJO的基本类型都为包装的基本类型
      2. 局部变量用基本类型
      3. RPC方法的返回值和参数必须使用包装数据类型
        1. 数据库查询为null,因为需要自动拆箱,用基本类型可能有NPE的风险
        2. 在远程调用的RPC,返回的值为null;返回
    4. POJO类中必须写toString,便于排查问题;
    5. DO/DTO/VO等POJO对象,不要设定任何默认的属性址
    6. 构造方法禁止加入任何业务逻辑,如果有初始化逻辑,请放在init中;
    7. 序列类属性,请不要手动修改serialVersionUID 字段,避免反序列失败;如果反序列失败,重新生成serialVersionUID;
    8. 使用索引访问用String的split方法的得到的数组,需要对最后一个字符有无内容做检查,否则会抛异常
    9. 类内方法定义顺序依次为;公有(保护)方法>私有方法>getter/setter
    10. Setter/getter不需要增加任何业务逻辑,
    11. 循环体内使用StringBuffer而不要使用String,避免内存资源的浪费;
    12. 类成员与方法访问控制从严;
      1. 如果不允许外部直接使用,则通过new来创建对象,那么构造函数必须为private
      2. 工具类不允许有public或default构造方法。
      3. 类非static成员变量并且与子类共享,必须 用protected
      4. Static,成员考虑用final
      5. 类成员方法内部防范用private,继承使用,用protected

参考地址:https://github.com/vipshop/vjtools/blob/master/docs/standard/chapter12.md

你可能感兴趣的:(阿里巴巴java开发者手册整理(一))