Java学习——阿里巴巴Java开发规范,
Java学习——阿里巴巴Java开发规范,
代码写着写着,还是觉得应该细细研读一下代码规范,声明:之所以标注为原创,因为文章是自己写的,里面代码规范内容出自:https://github.com/alibaba/p3c
需要安装插件可以点击这里:http://www.cnblogs.com/aflyun/p/7668306.html
自己觉得比较常用的捡出来方便复习:为了加深印象,以下是手打哈,跟原文有点删减。
一 编程规约
1.类名使用 UpperCamelCase 风格
正例:MarcoPolo / UserDO / TcpUdpDeal
2.方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格
正例:localValue / getHttpMessage() / inputUserId
3.常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚。
正例:MAX_STOCK_COUNT
4.抽象类命名使用 Abstract 或 Base 开头;异常类命名使用Exception结尾;测试类命名以它要测试的类名开始,以Test结尾。
5.类型与中括号紧挨相连来定义数组。
正例:定义整形数组 int[] arrayDemo;
6. POJO 类中布尔类型的变量,都不要加 is 前缀。
7.包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,单数类名如果有复数含义,类名可以使用复数形式。
正例:应用工具类包名为 com.alibaba.ai.util 类名为 MessageUtils
8.为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词组合来表达其意。杜绝完全不规范的缩写,避免望文不知义。
正例:从远处仓库拉取代码的类命名为 PullCodeFromRemoteRepository
反例:变量 int a; 的随意命名方式
反例:AbstractClass “缩写”命名为 AbsClass; condition “缩写”命名为 condi.
9.枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。
正例:枚举名字为ProcessStatusEnum 的成员名称: SUCCESS / UNKNOWN_REASON
10.接口类中的方法和属性不要加任何修饰符号(包括 public),保持代码的简洁,并加上有效的 Javadoc 注释。尽量不要再接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。
正例:接口方法签名 void f(); 接口基础常量 String COMPANY = "alibaba";
反例:接口方法定义 public abstract void f();
11.接口和实现类的命名:
1)对于 Service 和 DAO 类,暴露出来的服务一定是接口,内部的实现类用 Impl 的后缀与接口区别。
正例: CacheServiceImpl 实现 CacheService 接口。
2)如果是形容能力的接口名称,取对应的形容词为接口名。
正例:AbstractTranslator 实现 Translatable
12.各层命名规约:
1) Service / DAO 层方法命名规约:获取单个对象的方法用 get 作前缀; 获取多个对象的方法<----> list 获取统计值的方法<----> count 插入的方法<----> save/insert 删除的方法<----> remove/delete 修改的方法<----> update
2) 领域模型命名规约:数据对象:xxxDO, xxx 为数据表名; 数据传输对象: xxxDTO, xxx为业务领域相关的名称; 展示对象: xxxVO, xxx一般为网页名称
二 代码格式
1. 左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格。
反例: if (空格a == b空格)
2. if / for / while / switch / do 等保留字与括号之间都必须加空格。
3. 任何二目、三目运算符的左右两边都需要加一个空格。 即 = && + -
4.注释的双斜线与注释内容之间有且仅有一个空格。
正例:
public static void main(String[] args) {
// 缩进 4 个空格
String say = "hello";
// 运算符的左右必须有一个空格
int flag = 0;
// 关键词 if 与括号之间必须有一个空格,括号内的 f 与左括号,0 与右括号不需要空格
if (flag == 0) {
System.out.println(say);
}
// 左大括号前加空格且不换行;左大括号后换行
if (flag == 1) {
System.out.println("world");
// 右大括号前换行,右大括号后有 else,不用换行
} else {
System.out.println("ok");
// 在右大括号后直接结束,则必须换行
}
}
5.方法参数在定义和传入时,多个参数逗号后边必须加空格。
正例:实例 "a", 后面必须要有一个空格: method("a", "b", "c")
三 OOP规约
1. Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值得对象来调用equals
正例:"test".equals(object);
2. 当一个类有多个构造方法,或者多个同名方法,这些方法应该按顺序放置在一起,该规则大于下面第3条
3. 类内方法定义的顺序依次为:共有方法或保护方法->私有方法->getter / setter 方法。
上面链接中后面还有很多规范,有关注释,日志,数据库等,有兴趣的小伙伴可以点进去了解哈。
相关文章
- 暂无相关文章
用户点评