阿里巴巴java开发者手册整理(一)
2017-10-18 本文已影响17人
卫渐行
- 编程规约
- 命名风格:驼峰命名
- POJO类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误;
- 例如: 定义基本类型为Boolean isDeleted ;
- 包名一律小写;统一使用单数的方式;类名一律大写,可以含有复数的表示方式;
- 尽量使用英文自定义编程元素,表达清楚model,service,dao层;如果模块,接口,类,方法使用了设计模式,在命名的时候要体现出来
- 从远程拉取代码的类:PullCodeFromRemoteRepository
- OrderFactory;LoginProxy;
- 接口定义的时候,尽量不要加上修饰符;并加上Javadoc主是,尽量不要在接口中定义变量;
- 接口方法 :Void f()
- 接口基础敞亮:String Company = “wenwei”
- JDK 8种允许又默认的实现,那么这个default方法,这个default ,是所有实现该接口最有价值的实现;
- 接口与类的命名规则:
- 接口:保证接口实现的类命名与接口命名一致
- 枚举类型加上Enum,枚举类型是特殊的常量类型,构造方法默认强制私有,成员名称:SUCCESS
- service/DAO层方法命名
- get:获取某个对象的方法的前缀
- list: 获取到对象list的方法的前缀
- update/modify:修改方法的前缀
- Count 统计对象的值的前缀
- insert/save;插入一个对象方法的前缀
- 常量的定义
- 不允许有特殊字符出现在常量中
- Long或者long初始化的时候,需要增加L;不能小写l;
- 常量类需要按照功能放在不同的常量类中;
- 如果变量类在一个范围内变化,且带有名称之外的衍生意义,需要增加枚举类型
- 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;
}
- 代码格式
- 采用4个空格缩进,禁止使用tab字符;
- 任何两目和三目运算符,左右两边都需要加一个空格
- // 和注释内容之间,有且仅有一个空格;
- 单行代码的字符限制为120,超出部分需要换行;换行的策略
- 第二行比第二行缩进4个空格,第三行不在缩进
- 运算符(方法调用点符号.)和下文一起缩进;
- 多个参数之间的逗号;逗号不能与下文一下缩进;
- 括号前不换行;
- IDE的text file encoding 设置为UTF-8;IDE中文件的换行符都为unix的格式(LF)(CR)
- OOP规约
- 避免类的对象访问类中的静态常量或者静态方法;
- object的equal方法容易抛空指针异常,应使用常量来调用equal;
- “test”.equal(object) 采用
- 不采用object.equal(“test”)
- 关于基本类型与包装类型的使用标准如下:
- 强制所有的POJO的基本类型都为包装的基本类型
- 局部变量用基本类型
- RPC方法的返回值和参数必须使用包装数据类型
- 数据库查询为null,因为需要自动拆箱,用基本类型可能有NPE的风险
- 在远程调用的RPC,返回的值为null;返回
- POJO类中必须写toString,便于排查问题;
- DO/DTO/VO等POJO对象,不要设定任何默认的属性址
- 构造方法禁止加入任何业务逻辑,如果有初始化逻辑,请放在init中;
- 序列类属性,请不要手动修改serialVersionUID 字段,避免反序列失败;如果反序列失败,重新生成serialVersionUID;
- 使用索引访问用String的split方法的得到的数组,需要对最后一个字符有无内容做检查,否则会抛异常
- 类内方法定义顺序依次为;公有(保护)方法>私有方法>getter/setter
- Setter/getter不需要增加任何业务逻辑,
- 循环体内使用StringBuffer而不要使用String,避免内存资源的浪费;
- 类成员与方法访问控制从严;
- 如果不允许外部直接使用,则通过new来创建对象,那么构造函数必须为private
- 工具类不允许有public或default构造方法。
- 类非static成员变量并且与子类共享,必须 用protected
- Static,成员考虑用final
- 类成员方法内部防范用private,继承使用,用protected
参考地址:https://github.com/vipshop/vjtools/blob/master/docs/standard/chapter12.md